@primafuture/systemd-tasks 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +56 -1
- package/dist/finalizer.mjs +448 -0
- package/dist/finalizer.mjs.map +1 -0
- package/dist/observed.cjs.map +1 -1
- package/dist/observed.d.cts +1 -1
- package/dist/observed.d.ts +1 -1
- package/dist/observed.mjs.map +1 -1
- package/dist/runtime.cjs +533 -380
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +21 -1
- package/package.json +1 -1
package/dist/runtime.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/jsbi/dist/jsbi.mjs","../node_modules/dbus-next/lib/constants.js","../node_modules/dbus-next/lib/variant.js","../node_modules/dbus-next/lib/validators.js","../node_modules/dbus-next/lib/message-type.js","../node_modules/dbus-next/lib/signature.js","../node_modules/dbus-next/lib/service/interface.js","../node_modules/dbus-next/lib/errors.js","../node_modules/dbus-next/lib/service/handlers.js","../node_modules/dbus-next/lib/service/object.js","../node_modules/xml2js/lib/defaults.js","../node_modules/xmlbuilder/lib/Utility.js","../node_modules/xmlbuilder/lib/XMLDOMImplementation.js","../node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js","../node_modules/xmlbuilder/lib/XMLDOMStringList.js","../node_modules/xmlbuilder/lib/XMLDOMConfiguration.js","../node_modules/xmlbuilder/lib/NodeType.js","../node_modules/xmlbuilder/lib/XMLAttribute.js","../node_modules/xmlbuilder/lib/XMLNamedNodeMap.js","../node_modules/xmlbuilder/lib/XMLElement.js","../node_modules/xmlbuilder/lib/XMLCharacterData.js","../node_modules/xmlbuilder/lib/XMLCData.js","../node_modules/xmlbuilder/lib/XMLComment.js","../node_modules/xmlbuilder/lib/XMLDeclaration.js","../node_modules/xmlbuilder/lib/XMLDTDAttList.js","../node_modules/xmlbuilder/lib/XMLDTDEntity.js","../node_modules/xmlbuilder/lib/XMLDTDElement.js","../node_modules/xmlbuilder/lib/XMLDTDNotation.js","../node_modules/xmlbuilder/lib/XMLDocType.js","../node_modules/xmlbuilder/lib/XMLRaw.js","../node_modules/xmlbuilder/lib/XMLText.js","../node_modules/xmlbuilder/lib/XMLProcessingInstruction.js","../node_modules/xmlbuilder/lib/XMLDummy.js","../node_modules/xmlbuilder/lib/XMLNodeList.js","../node_modules/xmlbuilder/lib/DocumentPosition.js","../node_modules/xmlbuilder/lib/XMLNode.js","../node_modules/xmlbuilder/lib/XMLStringifier.js","../node_modules/xmlbuilder/lib/WriterState.js","../node_modules/xmlbuilder/lib/XMLWriterBase.js","../node_modules/xmlbuilder/lib/XMLStringWriter.js","../node_modules/xmlbuilder/lib/XMLDocument.js","../node_modules/xmlbuilder/lib/XMLDocumentCB.js","../node_modules/xmlbuilder/lib/XMLStreamWriter.js","../node_modules/xmlbuilder/lib/index.js","../node_modules/xml2js/lib/builder.js","../node_modules/sax/lib/sax.js","../node_modules/xml2js/lib/bom.js","../node_modules/xml2js/lib/processors.js","../node_modules/xml2js/lib/parser.js","../node_modules/xml2js/lib/xml2js.js","../node_modules/dbus-next/lib/client/proxy-interface.js","../node_modules/dbus-next/lib/client/proxy-object.js","../node_modules/dbus-next/lib/bus.js","../node_modules/safe-buffer/index.js","../node_modules/@nornagon/put/index.js","../node_modules/dbus-next/lib/align.js","../node_modules/long/src/long.js","../node_modules/dbus-next/lib/library-options.js","../node_modules/dbus-next/lib/marshallers.js","../node_modules/dbus-next/lib/marshall.js","../node_modules/dbus-next/lib/dbus-buffer.js","../node_modules/dbus-next/lib/header-signature.json","../node_modules/dbus-next/lib/message.js","../node_modules/dbus-next/lib/readline.js","../node_modules/dbus-next/lib/handshake.js","../node_modules/dbus-next/lib/address-x11.js","../node_modules/dbus-next/lib/marshall-compat.js","../node_modules/through/index.js","../node_modules/from/index.js","../node_modules/duplexer/index.js","../node_modules/map-stream/index.js","../node_modules/pause-stream/index.js","../node_modules/split/index.js","../node_modules/stream-combiner/index.js","../node_modules/event-stream/index.js","../node_modules/dbus-next/lib/connection.js","../node_modules/dbus-next/index.js","../src/runtime.ts","../src/client.ts","../src/errors.ts","../src/waiting.ts","../src/client-core.ts","../src/diagnostics.ts","../src/io.ts","../src/observed-framing.ts","../src/observed-protocol.ts","../src/observed-systemd.ts","../src/observed-validation.ts","../src/validation.ts","../src/systemd.ts","../src/observed-operations.ts","../src/transport.ts","../src/types.ts"],"sourcesContent":["class JSBI extends Array{constructor(a,b){if(a>JSBI.__kMaxLength)throw new RangeError(\"Maximum BigInt size exceeded\");super(a),this.sign=b}static BigInt(a){var b=Math.floor,c=Number.isFinite;if(\"number\"==typeof a){if(0===a)return JSBI.__zero();if((0|a)===a)return 0>a?JSBI.__oneDigit(-a,!0):JSBI.__oneDigit(a,!1);if(!c(a)||b(a)!==a)throw new RangeError(\"The number \"+a+\" cannot be converted to BigInt because it is not an integer\");return JSBI.__fromDouble(a)}if(\"string\"==typeof a){const b=JSBI.__fromString(a);if(null===b)throw new SyntaxError(\"Cannot convert \"+a+\" to a BigInt\");return b}if(\"boolean\"==typeof a)return!0===a?JSBI.__oneDigit(1,!1):JSBI.__zero();if(\"object\"==typeof a){if(a.constructor===JSBI)return a;const b=JSBI.__toPrimitive(a);return JSBI.BigInt(b)}throw new TypeError(\"Cannot convert \"+a+\" to a BigInt\")}toDebugString(){const a=[\"BigInt[\"];for(const b of this)a.push((b?(b>>>0).toString(16):b)+\", \");return a.push(\"]\"),a.join(\"\")}toString(a=10){if(2>a||36<a)throw new RangeError(\"toString() radix argument must be between 2 and 36\");return 0===this.length?\"0\":0==(a&a-1)?JSBI.__toStringBasePowerOfTwo(this,a):JSBI.__toStringGeneric(this,a,!1)}static toNumber(a){var b=Math.clz32;const c=a.length;if(0===c)return 0;if(1===c){const b=a.__unsignedDigit(0);return a.sign?-b:b}const d=a.__digit(c-1),e=b(d),f=32*c-e;if(1024<f)return a.sign?-Infinity:1/0;let g=f-1,h=d,i=c-1;const j=e+1;let k=32===j?0:h<<j;k>>>=12;const l=j-12;let m=12<=j?0:h<<20+j,n=20+j;0<l&&0<i&&(i--,h=a.__digit(i),k|=h>>>32-l,m=h<<l,n=l),0<n&&0<i&&(i--,h=a.__digit(i),m|=h>>>32-n,n-=32);const o=JSBI.__decideRounding(a,n,i,h);if((1===o||0===o&&1==(1&m))&&(m=m+1>>>0,0==m&&(k++,0!=k>>>20&&(k=0,g++,1023<g))))return a.sign?-Infinity:1/0;const p=a.sign?-2147483648:0;return g=g+1023<<20,JSBI.__kBitConversionInts[1]=p|g|k,JSBI.__kBitConversionInts[0]=m,JSBI.__kBitConversionDouble[0]}static unaryMinus(a){if(0===a.length)return a;const b=a.__copy();return b.sign=!a.sign,b}static bitwiseNot(a){return a.sign?JSBI.__absoluteSubOne(a).__trim():JSBI.__absoluteAddOne(a,!0)}static exponentiate(a,b){if(b.sign)throw new RangeError(\"Exponent must be positive\");if(0===b.length)return JSBI.__oneDigit(1,!1);if(0===a.length)return a;if(1===a.length&&1===a.__digit(0))return a.sign&&0==(1&b.__digit(0))?JSBI.unaryMinus(a):a;if(1<b.length)throw new RangeError(\"BigInt too big\");let c=b.__unsignedDigit(0);if(1===c)return a;if(c>=JSBI.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");if(1===a.length&&2===a.__digit(0)){const b=1+(c>>>5),d=a.sign&&0!=(1&c),e=new JSBI(b,d);e.__initializeDigits();const f=1<<(31&c);return e.__setDigit(b-1,f),e}let d=null,e=a;for(0!=(1&c)&&(d=a),c>>=1;0!==c;c>>=1)e=JSBI.multiply(e,e),0!=(1&c)&&(null===d?d=e:d=JSBI.multiply(d,e));return d}static multiply(a,b){if(0===a.length)return a;if(0===b.length)return b;let c=a.length+b.length;32<=a.__clzmsd()+b.__clzmsd()&&c--;const d=new JSBI(c,a.sign!==b.sign);d.__initializeDigits();for(let c=0;c<a.length;c++)JSBI.__multiplyAccumulate(b,a.__digit(c),d,c);return d.__trim()}static divide(a,b){if(0===b.length)throw new RangeError(\"Division by zero\");if(0>JSBI.__absoluteCompare(a,b))return JSBI.__zero();const c=a.sign!==b.sign,d=b.__unsignedDigit(0);let e;if(1===b.length&&65535>=d){if(1===d)return c===a.sign?a:JSBI.unaryMinus(a);e=JSBI.__absoluteDivSmall(a,d,null)}else e=JSBI.__absoluteDivLarge(a,b,!0,!1);return e.sign=c,e.__trim()}static remainder(a,b){if(0===b.length)throw new RangeError(\"Division by zero\");if(0>JSBI.__absoluteCompare(a,b))return a;const c=b.__unsignedDigit(0);if(1===b.length&&65535>=c){if(1===c)return JSBI.__zero();const b=JSBI.__absoluteModSmall(a,c);return 0===b?JSBI.__zero():JSBI.__oneDigit(b,a.sign)}const d=JSBI.__absoluteDivLarge(a,b,!1,!0);return d.sign=a.sign,d.__trim()}static add(a,b){const c=a.sign;return c===b.sign?JSBI.__absoluteAdd(a,b,c):0<=JSBI.__absoluteCompare(a,b)?JSBI.__absoluteSub(a,b,c):JSBI.__absoluteSub(b,a,!c)}static subtract(a,b){const c=a.sign;return c===b.sign?0<=JSBI.__absoluteCompare(a,b)?JSBI.__absoluteSub(a,b,c):JSBI.__absoluteSub(b,a,!c):JSBI.__absoluteAdd(a,b,c)}static leftShift(a,b){return 0===b.length||0===a.length?a:b.sign?JSBI.__rightShiftByAbsolute(a,b):JSBI.__leftShiftByAbsolute(a,b)}static signedRightShift(a,b){return 0===b.length||0===a.length?a:b.sign?JSBI.__leftShiftByAbsolute(a,b):JSBI.__rightShiftByAbsolute(a,b)}static unsignedRightShift(){throw new TypeError(\"BigInts have no unsigned right shift; use >> instead\")}static lessThan(a,b){return 0>JSBI.__compareToBigInt(a,b)}static lessThanOrEqual(a,b){return 0>=JSBI.__compareToBigInt(a,b)}static greaterThan(a,b){return 0<JSBI.__compareToBigInt(a,b)}static greaterThanOrEqual(a,b){return 0<=JSBI.__compareToBigInt(a,b)}static equal(a,b){if(a.sign!==b.sign)return!1;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a.__digit(c)!==b.__digit(c))return!1;return!0}static bitwiseAnd(a,b){var c=Math.max;if(!a.sign&&!b.sign)return JSBI.__absoluteAnd(a,b).__trim();if(a.sign&&b.sign){const d=c(a.length,b.length)+1;let e=JSBI.__absoluteSubOne(a,d);const f=JSBI.__absoluteSubOne(b);return e=JSBI.__absoluteOr(e,f,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}return a.sign&&([a,b]=[b,a]),JSBI.__absoluteAndNot(a,JSBI.__absoluteSubOne(b)).__trim()}static bitwiseXor(a,b){var c=Math.max;if(!a.sign&&!b.sign)return JSBI.__absoluteXor(a,b).__trim();if(a.sign&&b.sign){const d=c(a.length,b.length),e=JSBI.__absoluteSubOne(a,d),f=JSBI.__absoluteSubOne(b);return JSBI.__absoluteXor(e,f,e).__trim()}const d=c(a.length,b.length)+1;a.sign&&([a,b]=[b,a]);let e=JSBI.__absoluteSubOne(b,d);return e=JSBI.__absoluteXor(e,a,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}static bitwiseOr(a,b){var c=Math.max;const d=c(a.length,b.length);if(!a.sign&&!b.sign)return JSBI.__absoluteOr(a,b).__trim();if(a.sign&&b.sign){let c=JSBI.__absoluteSubOne(a,d);const e=JSBI.__absoluteSubOne(b);return c=JSBI.__absoluteAnd(c,e,c),JSBI.__absoluteAddOne(c,!0,c).__trim()}a.sign&&([a,b]=[b,a]);let e=JSBI.__absoluteSubOne(b,d);return e=JSBI.__absoluteAndNot(e,a,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}static ADD(a,b){if(a=JSBI.__toPrimitive(a),b=JSBI.__toPrimitive(b),\"string\"==typeof a)return\"string\"!=typeof b&&(b=b.toString()),a+b;if(\"string\"==typeof b)return a.toString()+b;if(a=JSBI.__toNumeric(a),b=JSBI.__toNumeric(b),JSBI.__isBigInt(a)&&JSBI.__isBigInt(b))return JSBI.add(a,b);if(\"number\"==typeof a&&\"number\"==typeof b)return a+b;throw new TypeError(\"Cannot mix BigInt and other types, use explicit conversions\")}static LT(a,b){return JSBI.__compare(a,b,0)}static LE(a,b){return JSBI.__compare(a,b,1)}static GT(a,b){return JSBI.__compare(a,b,2)}static GE(a,b){return JSBI.__compare(a,b,3)}static EQ(a,b){for(;;){if(JSBI.__isBigInt(a))return JSBI.__isBigInt(b)?JSBI.equal(a,b):JSBI.EQ(b,a);if(\"number\"==typeof a){if(JSBI.__isBigInt(b))return JSBI.__equalToNumber(b,a);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"string\"==typeof a){if(JSBI.__isBigInt(b))return a=JSBI.__fromString(a),null!==a&&JSBI.equal(a,b);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"boolean\"==typeof a){if(JSBI.__isBigInt(b))return JSBI.__equalToNumber(b,+a);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"symbol\"==typeof a){if(JSBI.__isBigInt(b))return!1;if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"object\"==typeof a){if(\"object\"==typeof b&&b.constructor!==JSBI)return a==b;a=JSBI.__toPrimitive(a)}else return a==b}}static __zero(){return new JSBI(0,!1)}static __oneDigit(a,b){const c=new JSBI(1,b);return c.__setDigit(0,a),c}__copy(){const a=new JSBI(this.length,this.sign);for(let b=0;b<this.length;b++)a[b]=this[b];return a}__trim(){let a=this.length,b=this[a-1];for(;0===b;)a--,b=this[a-1],this.pop();return 0===a&&(this.sign=!1),this}__initializeDigits(){for(let a=0;a<this.length;a++)this[a]=0}static __decideRounding(a,b,c,d){if(0<b)return-1;let e;if(0>b)e=-b-1;else{if(0===c)return-1;c--,d=a.__digit(c),e=31}let f=1<<e;if(0==(d&f))return-1;if(f-=1,0!=(d&f))return 1;for(;0<c;)if(c--,0!==a.__digit(c))return 1;return 0}static __fromDouble(a){JSBI.__kBitConversionDouble[0]=a;const b=2047&JSBI.__kBitConversionInts[1]>>>20,c=b-1023,d=(c>>>5)+1,e=new JSBI(d,0>a);let f=1048575&JSBI.__kBitConversionInts[1]|1048576,g=JSBI.__kBitConversionInts[0];const h=20,i=31&c;let j,k=0;if(i<20){const a=h-i;k=a+32,j=f>>>a,f=f<<32-a|g>>>a,g<<=32-a}else if(i===20)k=32,j=f,f=g;else{const a=i-h;k=32-a,j=f<<a|g>>>32-a,f=g<<a}e.__setDigit(d-1,j);for(let b=d-2;0<=b;b--)0<k?(k-=32,j=f,f=g):j=0,e.__setDigit(b,j);return e.__trim()}static __isWhitespace(a){return!!(13>=a&&9<=a)||(159>=a?32==a:131071>=a?160==a||5760==a:196607>=a?(a&=131071,10>=a||40==a||41==a||47==a||95==a||4096==a):65279==a)}static __fromString(a,b=0){let c=0;const e=a.length;let f=0;if(f===e)return JSBI.__zero();let g=a.charCodeAt(f);for(;JSBI.__isWhitespace(g);){if(++f===e)return JSBI.__zero();g=a.charCodeAt(f)}if(43===g){if(++f===e)return null;g=a.charCodeAt(f),c=1}else if(45===g){if(++f===e)return null;g=a.charCodeAt(f),c=-1}if(0===b){if(b=10,48===g){if(++f===e)return JSBI.__zero();if(g=a.charCodeAt(f),88===g||120===g){if(b=16,++f===e)return null;g=a.charCodeAt(f)}else if(79===g||111===g){if(b=8,++f===e)return null;g=a.charCodeAt(f)}else if(66===g||98===g){if(b=2,++f===e)return null;g=a.charCodeAt(f)}}}else if(16===b&&48===g){if(++f===e)return JSBI.__zero();if(g=a.charCodeAt(f),88===g||120===g){if(++f===e)return null;g=a.charCodeAt(f)}}for(;48===g;){if(++f===e)return JSBI.__zero();g=a.charCodeAt(f)}const h=e-f;let i=JSBI.__kMaxBitsPerChar[b],j=JSBI.__kBitsPerCharTableMultiplier-1;if(h>1073741824/i)return null;const k=i*h+j>>>JSBI.__kBitsPerCharTableShift,l=new JSBI(k+31>>>5,!1),n=10>b?b:10,o=10<b?b-10:0;if(0==(b&b-1)){i>>=JSBI.__kBitsPerCharTableShift;const b=[],c=[];let d=!1;do{let h=0,j=0;for(;;){let b;if(g-48>>>0<n)b=g-48;else if((32|g)-97>>>0<o)b=(32|g)-87;else{d=!0;break}if(j+=i,h=h<<i|b,++f===e){d=!0;break}if(g=a.charCodeAt(f),32<j+i)break}b.push(h),c.push(j)}while(!d);JSBI.__fillFromParts(l,b,c)}else{l.__initializeDigits();let c=!1,h=0;do{let k=0,p=1;for(;;){let i;if(g-48>>>0<n)i=g-48;else if((32|g)-97>>>0<o)i=(32|g)-87;else{c=!0;break}const d=p*b;if(4294967295<d)break;if(p=d,k=k*b+i,h++,++f===e){c=!0;break}g=a.charCodeAt(f)}j=32*JSBI.__kBitsPerCharTableMultiplier-1;const q=i*h+j>>>JSBI.__kBitsPerCharTableShift+5;l.__inplaceMultiplyAdd(p,k,q)}while(!c)}for(;f!==e;){if(!JSBI.__isWhitespace(g))return null;g=a.charCodeAt(f++)}return 0!=c&&10!==b?null:(l.sign=-1==c,l.__trim())}static __fillFromParts(a,b,c){let d=0,e=0,f=0;for(let g=b.length-1;0<=g;g--){const h=b[g],i=c[g];e|=h<<f,f+=i,32===f?(a.__setDigit(d++,e),f=0,e=0):32<f&&(a.__setDigit(d++,e),f-=32,e=h>>>i-f)}if(0!==e){if(d>=a.length)throw new Error(\"implementation bug\");a.__setDigit(d++,e)}for(;d<a.length;d++)a.__setDigit(d,0)}static __toStringBasePowerOfTwo(a,b){var c=Math.clz32;const d=a.length;let e=b-1;e=(85&e>>>1)+(85&e),e=(51&e>>>2)+(51&e),e=(15&e>>>4)+(15&e);const f=e,g=b-1,h=a.__digit(d-1),i=c(h);let j=0|(32*d-i+f-1)/f;if(a.sign&&j++,268435456<j)throw new Error(\"string too long\");const k=Array(j);let l=j-1,m=0,n=0;for(let c=0;c<d-1;c++){const b=a.__digit(c),d=(m|b<<n)&g;k[l--]=JSBI.__kConversionChars[d];const e=f-n;for(m=b>>>e,n=32-e;n>=f;)k[l--]=JSBI.__kConversionChars[m&g],m>>>=f,n-=f}const o=(m|h<<n)&g;for(k[l--]=JSBI.__kConversionChars[o],m=h>>>f-n;0!==m;)k[l--]=JSBI.__kConversionChars[m&g],m>>>=f;if(a.sign&&(k[l--]=\"-\"),-1!=l)throw new Error(\"implementation bug\");return k.join(\"\")}static __toStringGeneric(a,b,c){var d=Math.clz32;const e=a.length;if(0===e)return\"\";if(1===e){let d=a.__unsignedDigit(0).toString(b);return!1===c&&a.sign&&(d=\"-\"+d),d}const f=32*e-d(a.__digit(e-1)),g=JSBI.__kMaxBitsPerChar[b],h=g-1;let i=f*JSBI.__kBitsPerCharTableMultiplier;i+=h-1,i=0|i/h;const j=i+1>>1,k=JSBI.exponentiate(JSBI.__oneDigit(b,!1),JSBI.__oneDigit(j,!1));let l,m;const n=k.__unsignedDigit(0);if(1===k.length&&65535>=n){l=new JSBI(a.length,!1),l.__initializeDigits();let c=0;for(let b=2*a.length-1;0<=b;b--){const d=c<<16|a.__halfDigit(b);l.__setHalfDigit(b,0|d/n),c=0|d%n}m=c.toString(b)}else{const c=JSBI.__absoluteDivLarge(a,k,!0,!0);l=c.quotient;const d=c.remainder.__trim();m=JSBI.__toStringGeneric(d,b,!0)}l.__trim();let o=JSBI.__toStringGeneric(l,b,!0);for(;m.length<j;)m=\"0\"+m;return!1===c&&a.sign&&(o=\"-\"+o),o+m}static __unequalSign(a){return a?-1:1}static __absoluteGreater(a){return a?-1:1}static __absoluteLess(a){return a?1:-1}static __compareToBigInt(a,b){const c=a.sign;if(c!==b.sign)return JSBI.__unequalSign(c);const d=JSBI.__absoluteCompare(a,b);return 0<d?JSBI.__absoluteGreater(c):0>d?JSBI.__absoluteLess(c):0}static __compareToNumber(a,b){if(b|!0){const c=a.sign,d=0>b;if(c!==d)return JSBI.__unequalSign(c);if(0===a.length){if(d)throw new Error(\"implementation bug\");return 0===b?0:-1}if(1<a.length)return JSBI.__absoluteGreater(c);const e=Math.abs(b),f=a.__unsignedDigit(0);return f>e?JSBI.__absoluteGreater(c):f<e?JSBI.__absoluteLess(c):0}return JSBI.__compareToDouble(a,b)}static __compareToDouble(a,b){var c=Math.clz32;if(b!==b)return b;if(b===1/0)return-1;if(b===-Infinity)return 1;const d=a.sign;if(d!==0>b)return JSBI.__unequalSign(d);if(0===b)throw new Error(\"implementation bug: should be handled elsewhere\");if(0===a.length)return-1;JSBI.__kBitConversionDouble[0]=b;const e=2047&JSBI.__kBitConversionInts[1]>>>20;if(2047==e)throw new Error(\"implementation bug: handled elsewhere\");const f=e-1023;if(0>f)return JSBI.__absoluteGreater(d);const g=a.length;let h=a.__digit(g-1);const i=c(h),j=32*g-i,k=f+1;if(j<k)return JSBI.__absoluteLess(d);if(j>k)return JSBI.__absoluteGreater(d);let l=1048576|1048575&JSBI.__kBitConversionInts[1],m=JSBI.__kBitConversionInts[0];const n=20,o=31-i;if(o!==(j-1)%31)throw new Error(\"implementation bug\");let p,q=0;if(20>o){const a=n-o;q=a+32,p=l>>>a,l=l<<32-a|m>>>a,m<<=32-a}else if(20===o)q=32,p=l,l=m;else{const a=o-n;q=32-a,p=l<<a|m>>>32-a,l=m<<a}if(h>>>=0,p>>>=0,h>p)return JSBI.__absoluteGreater(d);if(h<p)return JSBI.__absoluteLess(d);for(let c=g-2;0<=c;c--){0<q?(q-=32,p=l>>>0,l=m,m=0):p=0;const b=a.__unsignedDigit(c);if(b>p)return JSBI.__absoluteGreater(d);if(b<p)return JSBI.__absoluteLess(d)}if(0!==l||0!==m){if(0===q)throw new Error(\"implementation bug\");return JSBI.__absoluteLess(d)}return 0}static __equalToNumber(a,b){var c=Math.abs;return b|0===b?0===b?0===a.length:1===a.length&&a.sign===0>b&&a.__unsignedDigit(0)===c(b):0===JSBI.__compareToDouble(a,b)}static __comparisonResultToBool(a,b){switch(b){case 0:return 0>a;case 1:return 0>=a;case 2:return 0<a;case 3:return 0<=a;}throw new Error(\"unreachable\")}static __compare(a,b,c){if(a=JSBI.__toPrimitive(a),b=JSBI.__toPrimitive(b),\"string\"==typeof a&&\"string\"==typeof b)switch(c){case 0:return a<b;case 1:return a<=b;case 2:return a>b;case 3:return a>=b;}if(JSBI.__isBigInt(a)&&\"string\"==typeof b)return b=JSBI.__fromString(b),null!==b&&JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(\"string\"==typeof a&&JSBI.__isBigInt(b))return a=JSBI.__fromString(a),null!==a&&JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(a=JSBI.__toNumeric(a),b=JSBI.__toNumeric(b),JSBI.__isBigInt(a)){if(JSBI.__isBigInt(b))return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(\"number\"!=typeof b)throw new Error(\"implementation bug\");return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(a,b),c)}if(\"number\"!=typeof a)throw new Error(\"implementation bug\");if(JSBI.__isBigInt(b))return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(b,a),2^c);if(\"number\"!=typeof b)throw new Error(\"implementation bug\");return 0===c?a<b:1===c?a<=b:2===c?a>b:3===c?a>=b:void 0}__clzmsd(){return Math.clz32(this[this.length-1])}static __absoluteAdd(a,b,c){if(a.length<b.length)return JSBI.__absoluteAdd(b,a,c);if(0===a.length)return a;if(0===b.length)return a.sign===c?a:JSBI.unaryMinus(a);let d=a.length;(0===a.__clzmsd()||b.length===a.length&&0===b.__clzmsd())&&d++;const e=new JSBI(d,c);let f=0,g=0;for(;g<b.length;g++){const c=b.__digit(g),d=a.__digit(g),h=(65535&d)+(65535&c)+f,i=(d>>>16)+(c>>>16)+(h>>>16);f=i>>>16,e.__setDigit(g,65535&h|i<<16)}for(;g<a.length;g++){const b=a.__digit(g),c=(65535&b)+f,d=(b>>>16)+(c>>>16);f=d>>>16,e.__setDigit(g,65535&c|d<<16)}return g<e.length&&e.__setDigit(g,f),e.__trim()}static __absoluteSub(a,b,c){if(0===a.length)return a;if(0===b.length)return a.sign===c?a:JSBI.unaryMinus(a);const d=new JSBI(a.length,c);let e=0,f=0;for(;f<b.length;f++){const c=a.__digit(f),g=b.__digit(f),h=(65535&c)-(65535&g)-e;e=1&h>>>16;const i=(c>>>16)-(g>>>16)-e;e=1&i>>>16,d.__setDigit(f,65535&h|i<<16)}for(;f<a.length;f++){const b=a.__digit(f),c=(65535&b)-e;e=1&c>>>16;const g=(b>>>16)-e;e=1&g>>>16,d.__setDigit(f,65535&c|g<<16)}return d.__trim()}static __absoluteAddOne(a,b,c=null){const d=a.length;null===c?c=new JSBI(d,b):c.sign=b;let e=!0;for(let f,g=0;g<d;g++){f=a.__digit(g);const b=-1===f;e&&(f=0|f+1),e=b,c.__setDigit(g,f)}return e&&c.__setDigitGrow(d,1),c}static __absoluteSubOne(a,b){const c=a.length;b=b||c;const d=new JSBI(b,!1);let e=!0;for(let f,g=0;g<c;g++){f=a.__digit(g);const b=0===f;e&&(f=0|f-1),e=b,d.__setDigit(g,f)}for(let e=c;e<b;e++)d.__setDigit(e,0);return d}static __absoluteAnd(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=f;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)&b.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteAndNot(a,b,c=null){const d=a.length,e=b.length;let f=e;d<e&&(f=d);let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)&~b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteOr(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)|b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteXor(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)^b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteCompare(a,b){const c=a.length-b.length;if(0!=c)return c;let d=a.length-1;for(;0<=d&&a.__digit(d)===b.__digit(d);)d--;return 0>d?0:a.__unsignedDigit(d)>b.__unsignedDigit(d)?1:-1}static __multiplyAccumulate(a,b,c,d){var e=Math.imul;if(0===b)return;const f=65535&b,g=b>>>16;let h=0,j=0,k=0;for(let l=0;l<a.length;l++,d++){let b=c.__digit(d),i=65535&b,m=b>>>16;const n=a.__digit(l),o=65535&n,p=n>>>16,q=e(o,f),r=e(o,g),s=e(p,f),t=e(p,g);i+=j+(65535&q),m+=k+h+(i>>>16)+(q>>>16)+(65535&r)+(65535&s),h=m>>>16,j=(r>>>16)+(s>>>16)+(65535&t)+h,h=j>>>16,j&=65535,k=t>>>16,b=65535&i|m<<16,c.__setDigit(d,b)}for(;0!=h||0!==j||0!==k;d++){let a=c.__digit(d);const b=(65535&a)+j,e=(a>>>16)+(b>>>16)+k+h;j=0,k=0,h=e>>>16,a=65535&b|e<<16,c.__setDigit(d,a)}}static __internalMultiplyAdd(a,b,c,d,e){var f=Math.imul;let g=c,h=0;for(let j=0;j<d;j++){const c=a.__digit(j),d=f(65535&c,b),i=(65535&d)+h+g;g=i>>>16;const k=f(c>>>16,b),l=(65535&k)+(d>>>16)+g;g=l>>>16,h=k>>>16,e.__setDigit(j,l<<16|65535&i)}if(e.length>d)for(e.__setDigit(d++,g+h);d<e.length;)e.__setDigit(d++,0);else if(0!==g+h)throw new Error(\"implementation bug\")}__inplaceMultiplyAdd(a,b,c){var e=Math.imul;c>this.length&&(c=this.length);const f=65535&a,g=a>>>16;let h=0,j=65535&b,k=b>>>16;for(let l=0;l<c;l++){const a=this.__digit(l),b=65535&a,c=a>>>16,d=e(b,f),i=e(b,g),m=e(c,f),n=e(c,g),o=j+(65535&d),p=k+h+(o>>>16)+(d>>>16)+(65535&i)+(65535&m);j=(i>>>16)+(m>>>16)+(65535&n)+(p>>>16),h=j>>>16,j&=65535,k=n>>>16;this.__setDigit(l,65535&o|p<<16)}if(0!=h||0!==j||0!==k)throw new Error(\"implementation bug\")}static __absoluteDivSmall(a,b,c){null===c&&(c=new JSBI(a.length,!1));let d=0;for(let e,f=2*a.length-1;0<=f;f-=2){e=(d<<16|a.__halfDigit(f))>>>0;const g=0|e/b;d=0|e%b,e=(d<<16|a.__halfDigit(f-1))>>>0;const h=0|e/b;d=0|e%b,c.__setDigit(f>>>1,g<<16|h)}return c}static __absoluteModSmall(a,b){let c=0;for(let d=2*a.length-1;0<=d;d--){const e=(c<<16|a.__halfDigit(d))>>>0;c=0|e%b}return c}static __absoluteDivLarge(a,b,d,e){var f=Math.imul;const g=b.__halfDigitLength(),h=b.length,c=a.__halfDigitLength()-g;let i=null;d&&(i=new JSBI(c+2>>>1,!1),i.__initializeDigits());const k=new JSBI(g+2>>>1,!1);k.__initializeDigits();const l=JSBI.__clz16(b.__halfDigit(g-1));0<l&&(b=JSBI.__specialLeftShift(b,l,0));const m=JSBI.__specialLeftShift(a,l,1),n=b.__halfDigit(g-1);let o=0;for(let l,p=c;0<=p;p--){l=65535;const a=m.__halfDigit(p+g);if(a!==n){const c=(a<<16|m.__halfDigit(p+g-1))>>>0;l=0|c/n;let d=0|c%n;const e=b.__halfDigit(g-2),h=m.__halfDigit(p+g-2);for(;f(l,e)>>>0>(d<<16|h)>>>0&&(l--,d+=n,!(65535<d)););}JSBI.__internalMultiplyAdd(b,l,0,h,k);let e=m.__inplaceSub(k,p,g+1);0!==e&&(e=m.__inplaceAdd(b,p,g),m.__setHalfDigit(p+g,m.__halfDigit(p+g)+e),l--),d&&(1&p?o=l<<16:i.__setDigit(p>>>1,o|l))}return e?(m.__inplaceRightShift(l),d?{quotient:i,remainder:m}:m):d?i:void 0}static __clz16(a){return Math.clz32(a)-16}__inplaceAdd(a,b,c){let d=0;for(let e=0;e<c;e++){const c=this.__halfDigit(b+e)+a.__halfDigit(e)+d;d=c>>>16,this.__setHalfDigit(b+e,c)}return d}__inplaceSub(a,b,c){let d=0;if(1&b){b>>=1;let e=this.__digit(b),f=65535&e,g=0;for(;g<c-1>>>1;g++){const c=a.__digit(g),h=(e>>>16)-(65535&c)-d;d=1&h>>>16,this.__setDigit(b+g,h<<16|65535&f),e=this.__digit(b+g+1),f=(65535&e)-(c>>>16)-d,d=1&f>>>16}const h=a.__digit(g),i=(e>>>16)-(65535&h)-d;d=1&i>>>16,this.__setDigit(b+g,i<<16|65535&f);if(b+g+1>=this.length)throw new RangeError(\"out of bounds\");0==(1&c)&&(e=this.__digit(b+g+1),f=(65535&e)-(h>>>16)-d,d=1&f>>>16,this.__setDigit(b+a.length,4294901760&e|65535&f))}else{b>>=1;let e=0;for(;e<a.length-1;e++){const c=this.__digit(b+e),f=a.__digit(e),g=(65535&c)-(65535&f)-d;d=1&g>>>16;const h=(c>>>16)-(f>>>16)-d;d=1&h>>>16,this.__setDigit(b+e,h<<16|65535&g)}const f=this.__digit(b+e),g=a.__digit(e),h=(65535&f)-(65535&g)-d;d=1&h>>>16;let i=0;0==(1&c)&&(i=(f>>>16)-(g>>>16)-d,d=1&i>>>16),this.__setDigit(b+e,i<<16|65535&h)}return d}__inplaceRightShift(a){if(0===a)return;let b=this.__digit(0)>>>a;const c=this.length-1;for(let e=0;e<c;e++){const c=this.__digit(e+1);this.__setDigit(e,c<<32-a|b),b=c>>>a}this.__setDigit(c,b)}static __specialLeftShift(a,b,c){const d=a.length,e=new JSBI(d+c,!1);if(0===b){for(let b=0;b<d;b++)e.__setDigit(b,a.__digit(b));return 0<c&&e.__setDigit(d,0),e}let f=0;for(let g=0;g<d;g++){const c=a.__digit(g);e.__setDigit(g,c<<b|f),f=c>>>32-b}return 0<c&&e.__setDigit(d,f),e}static __leftShiftByAbsolute(a,b){const c=JSBI.__toShiftAmount(b);if(0>c)throw new RangeError(\"BigInt too big\");const e=c>>>5,f=31&c,g=a.length,h=0!==f&&0!=a.__digit(g-1)>>>32-f,j=g+e+(h?1:0),k=new JSBI(j,a.sign);if(0===f){let b=0;for(;b<e;b++)k.__setDigit(b,0);for(;b<j;b++)k.__setDigit(b,a.__digit(b-e))}else{let b=0;for(let a=0;a<e;a++)k.__setDigit(a,0);for(let c=0;c<g;c++){const g=a.__digit(c);k.__setDigit(c+e,g<<f|b),b=g>>>32-f}if(h)k.__setDigit(g+e,b);else if(0!=b)throw new Error(\"implementation bug\")}return k.__trim()}static __rightShiftByAbsolute(a,b){const c=a.length,d=a.sign,e=JSBI.__toShiftAmount(b);if(0>e)return JSBI.__rightShiftByMaximum(d);const f=e>>>5,g=31&e;let h=c-f;if(0>=h)return JSBI.__rightShiftByMaximum(d);let i=!1;if(d){if(0!=(a.__digit(f)&(1<<g)-1))i=!0;else for(let b=0;b<f;b++)if(0!==a.__digit(b)){i=!0;break}}if(i&&0===g){const b=a.__digit(c-1);0==~b&&h++}let j=new JSBI(h,d);if(0===g)for(let b=f;b<c;b++)j.__setDigit(b-f,a.__digit(b));else{let b=a.__digit(f)>>>g;const d=c-f-1;for(let c=0;c<d;c++){const e=a.__digit(c+f+1);j.__setDigit(c,e<<32-g|b),b=e>>>g}j.__setDigit(d,b)}return i&&(j=JSBI.__absoluteAddOne(j,!0,j)),j.__trim()}static __rightShiftByMaximum(a){return a?JSBI.__oneDigit(1,!0):JSBI.__zero()}static __toShiftAmount(a){if(1<a.length)return-1;const b=a.__unsignedDigit(0);return b>JSBI.__kMaxLengthBits?-1:b}static __toPrimitive(a,b=\"default\"){if(\"object\"!=typeof a)return a;if(a.constructor===JSBI)return a;const c=a[Symbol.toPrimitive];if(c){const a=c(b);if(\"object\"!=typeof a)return a;throw new TypeError(\"Cannot convert object to primitive value\")}const d=a.valueOf;if(d){const b=d.call(a);if(\"object\"!=typeof b)return b}const e=a.toString;if(e){const b=e.call(a);if(\"object\"!=typeof b)return b}throw new TypeError(\"Cannot convert object to primitive value\")}static __toNumeric(a){return JSBI.__isBigInt(a)?a:+a}static __isBigInt(a){return\"object\"==typeof a&&a.constructor===JSBI}__digit(a){return this[a]}__unsignedDigit(a){return this[a]>>>0}__setDigit(a,b){this[a]=0|b}__setDigitGrow(a,b){this[a]=0|b}__halfDigitLength(){const a=this.length;return 65535>=this.__unsignedDigit(a-1)?2*a-1:2*a}__halfDigit(a){return 65535&this[a>>>1]>>>((1&a)<<4)}__setHalfDigit(a,b){const c=a>>>1,d=this.__digit(c),e=1&a?65535&d|b<<16:4294901760&d|65535&b;this.__setDigit(c,e)}static __digitPow(a,b){let c=1;for(;0<b;)1&b&&(c*=a),b>>>=1,a*=a;return c}}JSBI.__kMaxLength=33554432,JSBI.__kMaxLengthBits=JSBI.__kMaxLength<<5,JSBI.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],JSBI.__kBitsPerCharTableShift=5,JSBI.__kBitsPerCharTableMultiplier=1<<JSBI.__kBitsPerCharTableShift,JSBI.__kConversionChars=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\"],JSBI.__kBitConversionBuffer=new ArrayBuffer(8),JSBI.__kBitConversionDouble=new Float64Array(JSBI.__kBitConversionBuffer),JSBI.__kBitConversionInts=new Int32Array(JSBI.__kBitConversionBuffer);export default JSBI;\n","/**\n * @class\n *\n * A flag enum for {@link MessageBus#requestName} to configure the name request\n * options.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n */\nclass NameFlag {}\n\n/**\n * This name allows other clients to replace it as the name owner on a request.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.ALLOW_REPLACEMENT = 1;\n\n/**\n * This request should replace an existing name if that name allows\n * replacement.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.REPLACE_EXISTING = 2;\n\n/**\n * This request should not enter the queue of clients requesting this name if\n * it is taken.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.DO_NOT_QUEUE = 4;\n\n/**\n * @class\n *\n * An enum for the return value of {@link MessageBus#requestName} to indicate\n * the status of the name request.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n */\nclass RequestNameReply {}\n\n/**\n * The application trying to request ownership of a name is already the owner\n * of it.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.PRIMARY_OWNER = 1;\n\n/**\n * The name already had an owner, `DBUS_NAME_FLAG_DO_NOT_QUEUE` was not\n * specified, and either the current owner did not specify\n * `DBUS_NAME_FLAG_ALLOW_REPLACEMENT` or the requesting application did not\n * specify `DBUS_NAME_FLAG_REPLACE_EXISTING`.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.IN_QUEUE = 2;\n\n/**\n * The name already has an owner, `DBUS_NAME_FLAG_DO_NOT_QUEUE` was specified,\n * and either `DBUS_NAME_FLAG_ALLOW_REPLACEMENT` was not specified by the\n * current owner, or `DBUS_NAME_FLAG_REPLACE_EXISTING` was not specified by the\n * requesting application.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.EXISTS = 3;\n\n/**\n * The application trying to request ownership of a name is already the owner\n * of it.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.ALREADY_OWNER = 4;\n\n/**\n * @class\n *\n * An enum for the return value of {@link MessageBus#releaseName} to indicate\n * the status of the release name request.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-release-name}\n */\nclass ReleaseNameReply {}\n\n/**\n * The caller has released his claim on the given name. Either the caller was\n * the primary owner of the name, and the name is now unused or taken by\n * somebody waiting in the queue for the name, or the caller was waiting in the\n * queue for the name and has now been removed from the queue.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.RELEASED = 1;\n\n/**\n * The given name does not exist on this bus.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.NON_EXISTENT = 2;\n\n/**\n * The caller was not the primary owner of this name, and was also not waiting\n * in the queue to own this name.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.NOT_OWNER = 3;\n\n/**\n * @class\n *\n * An enum value for the {@link Message} `type` member to indicate the type of message.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n */\nclass MessageType {}\n\n/**\n * The message is a method call.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.METHOD_CALL = 1;\n\n/**\n * The message is a method return to a previous call.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.METHOD_RETURN = 2;\n\n/**\n * The message is an error reply.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.ERROR = 3;\n\n/**\n * The message is a signal.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.SIGNAL = 4;\n\n/**\n * @class\n *\n * An flag enum for the {@link Message} `flags` member to configure behavior\n * for message processing.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n */\nclass MessageFlag {}\n\n/**\n * No reply is expected from this message.\n *\n * @memberof MessageFlag\n * @static\n * @constant\n */\nMessageFlag.NO_REPLY_EXPECTED = 1;\n\n/**\n * This message should not autostart a service.\n *\n * @memberof MessageFlag\n * @static\n * @constant\n */\nMessageFlag.NO_AUTO_START = 2;\n\nconst MAX_INT64_STR = '9223372036854775807';\nconst MIN_INT64_STR = '-9223372036854775807';\nconst MAX_UINT64_STR = '18446744073709551615';\nconst MIN_UINT64_STR = '0';\n\nconst _JSBIConstants = {};\n\nfunction _getJSBIConstants () {\n if (Object.keys(_JSBIConstants).length !== 0) {\n return _JSBIConstants;\n }\n\n const JSBI = require('jsbi');\n\n _JSBIConstants.MAX_INT64 = JSBI.BigInt(MAX_INT64_STR);\n _JSBIConstants.MIN_INT64 = JSBI.BigInt(MIN_INT64_STR);\n _JSBIConstants.MAX_UINT64 = JSBI.BigInt(MAX_UINT64_STR);\n _JSBIConstants.MIN_UINT64 = JSBI.BigInt(MIN_UINT64_STR);\n\n return _JSBIConstants;\n}\n\nconst _BigIntConstants = {};\n\nfunction _getBigIntConstants () {\n if (Object.keys(_BigIntConstants).length !== 0) {\n return _BigIntConstants;\n }\n\n _BigIntConstants.MAX_INT64 = BigInt(MAX_INT64_STR);\n _BigIntConstants.MIN_INT64 = BigInt(MIN_INT64_STR);\n _BigIntConstants.MAX_UINT64 = BigInt(MAX_UINT64_STR);\n _BigIntConstants.MIN_UINT64 = BigInt(MIN_UINT64_STR);\n\n return _BigIntConstants;\n}\n\nmodule.exports = {\n MAX_INT64_STR: MAX_INT64_STR,\n MIN_INT64_STR: MIN_INT64_STR,\n MAX_UINT64_STR: MAX_UINT64_STR,\n MIN_UINT64_STR: MIN_UINT64_STR,\n\n NameFlag: NameFlag,\n RequestNameReply: RequestNameReply,\n ReleaseNameReply: ReleaseNameReply,\n MessageType: MessageType,\n MessageFlag: MessageFlag,\n\n headerTypeName: [\n null,\n 'path',\n 'interface',\n 'member',\n 'errorName',\n 'replySerial',\n 'destination',\n 'sender',\n 'signature',\n 'unixFd'\n ],\n\n // TODO: merge to single hash? e.g path -> [1, 'o']\n fieldSignature: {\n path: 'o',\n interface: 's',\n member: 's',\n errorName: 's',\n replySerial: 'u',\n destination: 's',\n sender: 's',\n signature: 'g',\n unixFd: 'u'\n },\n headerTypeId: {\n path: 1,\n interface: 2,\n member: 3,\n errorName: 4,\n replySerial: 5,\n destination: 6,\n sender: 7,\n signature: 8,\n unixFd: 9\n },\n protocolVersion: 1,\n endianness: {\n le: 108,\n be: 66\n },\n messageSignature: 'yyyyuua(yv)',\n defaultAuthMethods: ['EXTERNAL', 'DBUS_COOKIE_SHA1', 'ANONYMOUS'],\n _getJSBIConstants: _getJSBIConstants,\n _getBigIntConstants: _getBigIntConstants\n};\n","/**\n * @class\n * A class to represent DBus variants for both the client and service\n * interfaces. The {@link ProxyInterface} and [`Interface`]{@link\n * module:interface~Interface} methods, signals, and properties will use this\n * type to represent variant types. The user should use this class directly for\n * sending variants to methods if their signature expects the type to be a\n * variant.\n *\n * @example\n * let str = new Variant('s', 'hello');\n * let num = new Variant('d', 53);\n * let map = new Variant('a{ss}', { foo: 'bar' });\n * let list = new Variant('as', [ 'foo', 'bar' ]);\n */\nclass Variant {\n /**\n * Construct a new `Variant` with the given signature and value.\n * @param {string} signature - a DBus type signature for the `Variant`.\n * @param {any} value - the value of the `Variant` with type specified by the type signature.\n */\n constructor (signature, value) {\n this.signature = signature;\n this.value = value;\n }\n}\n\nmodule.exports = {\n Variant: Variant\n};\n","/**\n * Utility functions to validate bus names, interface names, and object paths.\n *\n * @module validators\n */\n\nconst busNameRe = /^[A-Za-z_-][A-Za-z0-9_-]*$/;\n/**\n * Validate the string as a valid bus name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus}\n *\n * @static\n * @param {string} name - The name to validate as a valid bus name.\n * @returns {boolean} - Whether the string is a valid bus name.\n */\nfunction isBusNameValid (name) {\n if (typeof name !== 'string') {\n return false;\n }\n\n if (name.startsWith(':')) {\n // a unique bus name\n return true;\n }\n\n // a well-known bus name\n return !!(name.length > 0 &&\n name.length <= 255 &&\n name[0] !== '.' &&\n name.indexOf('.') !== -1 &&\n name.split('.').every((n) => n && busNameRe.test(n)));\n}\n\n/**\n * Throws an error if the given string is not a valid bus name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus}\n *\n * @static\n * @param {string} name - The name to validate as a bus name.\n */\nfunction assertBusNameValid (name) {\n if (!isBusNameValid(name)) {\n throw new Error(`Invalid bus name: ${name}`);\n }\n}\n\nconst pathRe = /^[A-Za-z0-9_]+$/;\n/**\n * Validate the string as a valid object path.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-object-path}\n *\n * @static\n * @param {string} path - The string to validate as an object path.\n * @returns {boolean} - Whether the string is a valid object path.\n */\nfunction isObjectPathValid (path) {\n return !!(typeof path === 'string' &&\n path &&\n path[0] === '/' &&\n (path.length === 1 ||\n (path[path.length - 1] !== '/' &&\n path.split('/').slice(1).every((p) => p && pathRe.test(p)))));\n}\n\n/**\n * Throws an error if the given string is not a valid object path.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-object-path}\n *\n * @static\n * @param {string} path - The string to validate as an object path.\n * @returns {boolean} - Whether the string is a valid object path.\n */\nfunction assertObjectPathValid (path) {\n if (!isObjectPathValid(path)) {\n throw new Error(`Invalid object path: ${path}`);\n }\n}\n\nconst elementRe = /^[A-Za-z_][A-Za-z0-9_]*$/;\n/**\n * Validate the string as a valid interface name.\n * see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as an interface name.\n * @returns {boolean} - Whether the string is a valid interface name.\n */\nfunction isInterfaceNameValid (name) {\n return !!(typeof name === 'string' &&\n name &&\n name.length > 0 &&\n name.length <= 255 &&\n name[0] !== '.' &&\n name.indexOf('.') !== -1 &&\n name.split('.').every((n) => n && elementRe.test(n)));\n}\n\n/**\n * Throws an error if the given string is not a valid interface name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as an interface name.\n * @returns {boolean} - Whether the string is a valid interface name.\n */\nfunction assertInterfaceNameValid (name) {\n if (!isInterfaceNameValid(name)) {\n throw new Error(`Invalid interface name: ${name}`);\n }\n}\n\n/**\n * Validate the string is a valid member name\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as a member name.\n * @returns {boolean} - Whether the string is a valid member name.\n */\nfunction isMemberNameValid (name) {\n return !!(typeof name === 'string' &&\n name &&\n name.length > 0 &&\n name.length <= 255 &&\n elementRe.test(name));\n}\n\n/**\n * Throws an error if the string is not a valid member name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as a member name.\n */\nfunction assertMemberNameValid (name) {\n if (!assertMemberNameValid) {\n throw new Error(`Invalid member name: ${name}`);\n }\n}\n\nmodule.exports = {\n isBusNameValid: isBusNameValid,\n assertBusNameValid: assertBusNameValid,\n isObjectPathValid: isObjectPathValid,\n assertObjectPathValid: assertObjectPathValid,\n isInterfaceNameValid: isInterfaceNameValid,\n assertInterfaceNameValid: assertInterfaceNameValid,\n isMemberNameValid: isMemberNameValid,\n assertMemberNameValid: assertMemberNameValid\n};\n","const {\n assertBusNameValid,\n assertInterfaceNameValid,\n assertObjectPathValid,\n assertMemberNameValid\n} = require('./validators');\n\nconst {\n METHOD_CALL,\n METHOD_RETURN,\n ERROR,\n SIGNAL\n} = require('./constants').MessageType;\n\n/**\n * @class\n * A `Message` is a class used for sending and receiving messages through the\n * {@link MessageBus} with the low-level api. `Message`s can be constructed by\n * the user directly for method calls or with the static convenience methods on\n * this class for the other types of messages. `Message`s can be sent through a\n * connected MessageBus with {@link MessageBus#call} for method calls that\n * expect a reply from the server or {@link MessageBus#send} for messages that\n * do not expect a reply. See those methods for an example of how to use this\n * class.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n *\n * @param {object} options - Options to construct this `Message` with. See the\n * corresponding member for more information.\n * @param {MessageType} [options.type={@link MessageType.METHOD_CALL}]\n * @param {int} [options.serial]\n * @param {string} [options.destination]\n * @param {string} [options.path]\n * @param {string} [options.interface] - Required for signals.\n * @param {string} [options.member] - Required for method calls and signals.\n * @param {string} [options.signature='']\n * @param {Array} [options.body=[]] - Must match the signature.\n * @param {string} [options.errorName] - Must be a valid interface name.\n * Required for errors.\n * @param {string} [options.replySerial] - Required for errors and method returns.\n * @param {MessageFlags} [options.flags]\n */\nclass Message {\n /**\n * Construct a new `Message` to send on the bus.\n */\n constructor (msg) {\n /**\n * @member {MessageType} - The type of message this is.\n */\n this.type = (msg.type ? msg.type : METHOD_CALL);\n this._sent = false;\n this._serial = (isNaN(msg.serial) ? null : msg.serial);\n /**\n * @member {string} - The name of the object path for the message.\n * Required for method calls and signals.\n */\n this.path = msg.path;\n /**\n * @member {string} - The destination interface for this message.\n */\n this.interface = msg.interface;\n /**\n * @member {string} - The destination member on the interface for this message.\n */\n this.member = msg.member;\n /**\n * @member {string} - The name of the error if this is a message of type\n * `ERROR`. Must be a valid interface name.\n */\n this.errorName = msg.errorName;\n /**\n * @member {int} - The serial for the message this is in reply to. Set for\n * types `ERROR` and `METHOD_RETURN`.\n */\n this.replySerial = msg.replySerial;\n /**\n * @member {string} - The address on the bus to send the message\n * to.\n */\n this.destination = msg.destination;\n /**\n * @member {string} - The name of the bus from which this message was sent.\n * Set by the {@link MessageBus}.\n */\n this.sender = msg.sender;\n /**\n * @member {string} - The type signature for the body args.\n */\n this.signature = msg.signature || '';\n /**\n * @member {Array} - The body arguments for this message. Must match the signature.\n */\n this.body = msg.body || [];\n /**\n * @member {MessageFlags} - The flags for this message.\n */\n this.flags = msg.flags || 0;\n\n if (this.destination) {\n assertBusNameValid(this.destination);\n }\n\n if (this.interface) {\n assertInterfaceNameValid(this.interface);\n }\n\n if (this.path) {\n assertObjectPathValid(this.path);\n }\n\n if (this.member) {\n assertMemberNameValid(this.member);\n }\n\n if (this.errorName) {\n assertInterfaceNameValid(this.errorName);\n }\n\n const requireFields = (...fields) => {\n for (const field of fields) {\n if (this[field] === undefined) {\n throw new Error(`Message is missing a required field: ${field}`);\n }\n }\n };\n\n // validate required fields\n switch (this.type) {\n case METHOD_CALL:\n requireFields('path', 'member');\n break;\n case SIGNAL:\n requireFields('path', 'member', 'interface');\n break;\n case ERROR:\n requireFields('errorName', 'replySerial');\n break;\n case METHOD_RETURN:\n requireFields('replySerial');\n break;\n default:\n throw new Error(`Got unknown message type: ${this.type}`);\n }\n }\n\n /**\n * @member {int} - The serial of the message to track through the bus. You\n * must use {@link MessageBus#newSerial} to get this serial. If not set, it\n * will be set automatically when the message is sent.\n */\n get serial () {\n return this._serial;\n }\n\n set serial (value) {\n this._sent = false;\n this._serial = value;\n }\n\n /**\n * Construct a new `Message` of type `ERROR` in reply to the given `Message`.\n *\n * @param {Message} msg - The `Message` this error is in reply to.\n * @param {string} errorName - The name of the error. Must be a valid\n * interface name.\n * @param {string} [errorText='An error occurred.'] - An error message for\n * the error.\n */\n static newError (msg, errorName, errorText = 'An error occurred.') {\n assertInterfaceNameValid(errorName);\n return new Message({\n type: ERROR,\n replySerial: msg.serial,\n destination: msg.sender,\n errorName: errorName,\n signature: 's',\n body: [errorText]\n });\n }\n\n /**\n * Construct a new `Message` of type `METHOD_RETURN` in reply to the given\n * message.\n *\n * @param {Message} msg - The `Message` this `Message` is in reply to.\n * @param {string} signature - The signature for the message body.\n * @param {Array} body - The body of the message as an array of arguments.\n * Must match the signature.\n */\n static newMethodReturn (msg, signature = '', body = []) {\n return new Message({\n type: METHOD_RETURN,\n replySerial: msg.serial,\n destination: msg.sender,\n signature: signature,\n body: body\n });\n }\n\n /**\n * Construct a new `Message` of type `SIGNAL` to broadcast on the bus.\n *\n * @param {string} path - The object path of this signal.\n * @param {string} iface - The interface of this signal.\n * @param {string} signature - The signature of the message body.\n * @param {Array] body - The body of the message as an array of arguments.\n * Must match the signature.\n */\n static newSignal (path, iface, name, signature = '', body = []) {\n return new Message({\n type: SIGNAL,\n interface: iface,\n path: path,\n member: name,\n signature: signature,\n body: body\n });\n }\n}\n\nmodule.exports = {\n Message: Message\n};\n","// parse signature from string to tree\n\nconst match = {\n '{': '}',\n '(': ')'\n};\n\nconst knownTypes = {};\n'(){}ybnqiuxtdsogarvehm*?@&^'.split('').forEach(function (c) {\n knownTypes[c] = true;\n});\n\nfunction parseSignature (signature) {\n let index = 0;\n function next () {\n if (index < signature.length) {\n const c = signature[index];\n ++index;\n return c;\n }\n return null;\n }\n\n function parseOne (c) {\n function checkNotEnd (c) {\n if (!c) {\n throw new Error('Bad signature: unexpected end');\n }\n return c;\n }\n\n if (!knownTypes[c]) { throw new Error(`Unknown type: \"${c}\" in signature \"${signature}\"`); }\n\n let ele;\n const res = { type: c, child: [] };\n switch (c) {\n case 'a': // array\n ele = next();\n checkNotEnd(ele);\n res.child.push(parseOne(ele));\n return res;\n case '{': // dict entry\n case '(': // struct\n while ((ele = next()) !== null && ele !== match[c]) { res.child.push(parseOne(ele)); }\n checkNotEnd(ele);\n return res;\n }\n return res;\n }\n\n const ret = [];\n let c;\n while ((c = next()) !== null) {\n ret.push(parseOne(c));\n }\n return ret;\n}\n\nfunction collapseSignature (value) {\n if (value.child.length === 0) {\n return value.type;\n }\n\n let type = value.type;\n for (let i = 0; i < value.child.length; ++i) {\n type += collapseSignature(value.child[i]);\n }\n if (type[0] === '{') {\n type += '}';\n } else if (type[0] === '(') {\n type += ')';\n }\n return type;\n}\n\nmodule.exports = {\n parseSignature: parseSignature,\n collapseSignature: collapseSignature\n};\n","/**\n * A module for exporting interfaces on a name on the message bus.\n *\n * @module interface\n */\nconst { parseSignature, collapseSignature } = require('../signature');\nconst variant = require('../variant');\nconst Variant = variant.Variant;\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have read access\n * to the property.\n *\n * @static\n */\nconst ACCESS_READ = 'read';\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have write access\n * to the property.\n *\n * @static\n */\nconst ACCESS_WRITE = 'write';\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have read and\n * write access to the property.\n *\n * @static\n */\nconst ACCESS_READWRITE = 'readwrite';\nconst EventEmitter = require('events');\nconst {\n assertInterfaceNameValid,\n assertMemberNameValid\n} = require('../validators');\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a property. The property will\n * be gotten and set from the class when users call the standard DBus methods\n * `org.freedesktop.DBus.Properties.Get`,\n * `org.freedesktop.DBus.Properties.Set`, and\n * `org.freedesktop.DBus.Properties.GetAll`. The property getters and setters\n * may throw a {@link DBusError} with an error name and message to return the\n * error to the client.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * class MyInterface extends Interface {\n * // uncomment below to use the decorator (jsdoc bug)\n * //@property({signature: 's'})\n * get MyProp() {\n * return this.myProp;\n * }\n * set MyProp(value) {\n * this.myProp = value;\n * }\n * }\n *\n * @param {object} options - The options for this property.\n * @param {string} options.signature - The DBus type signature for this property.\n * @param {access} [options.access=ACCESS_READWRITE] - The read and write\n * access of the property for clients (effects `Get` and `Set` property methods).\n * @param {string} [options.name] - The name of this property on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction property (options) {\n options.access = options.access || ACCESS_READWRITE;\n if (!options.signature) {\n throw new Error('missing signature for property');\n }\n options.signatureTree = parseSignature(options.signature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n descriptor.finisher = function (klass) {\n klass.prototype.$properties = klass.prototype.$properties || [];\n klass.prototype.$properties[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a method. The method will be\n * called when the client calls it on the bus with the given arguments with\n * types specified by the `inSignature` in the method options. The method\n * should return a result specified by the `outSignature` which will be\n * returned to the client over the message bus. If multiple output parameters\n * are specified in the `outSignature`, they should be returned within an\n * array.\n *\n * The method may also be `async` or return a `Promise` with the result and the\n * reply will be sent once the promise returns with a response body.\n *\n * The method may throw a {@link DBusError} with an error name and\n * message to return the error to the client.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * // uncomment the decorators to use them (jsdoc bug)\n *\n * class MyInterface extends Interface {\n * //@method({inSignature: 's', outSignature: 's'})\n * async Echo(what) {\n * return what;\n * }\n *\n * //@method({inSignature: 'ss', outSignature: 'vv'})\n * ReturnsMultiple(what, what2) {\n * return [\n * new Variant('s', what),\n * new Variant('s', what2)\n * ];\n * }\n *\n * //@method({inSignature: '', outSignature: ''})\n * ThrowsError() {\n * // the error is returned to the client\n * throw new DBusError('org.test.iface.Error', 'something went wrong');\n * }\n * }\n *\n * @param {object} options - The options for this method.\n * @param {string} [options.inSignature=\"\"] - The DBus type signature for the\n * input to this method.\n * @param {string} [options.outSignature=\"\"] - The DBus type signature for the\n * output of this method.\n * @param {string} [options.name] - The name of this method on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction method (options) {\n // TODO allow overriding of methods?\n // TODO introspect the names of the arguments for the function:\n // https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\n options.disabled = !!options.disabled;\n options.inSignature = options.inSignature || '';\n options.outSignature = options.outSignature || '';\n options.inSignatureTree = parseSignature(options.inSignature);\n options.outSignatureTree = parseSignature(options.outSignature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n options.fn = descriptor.descriptor.value;\n descriptor.finisher = function (klass) {\n klass.prototype.$methods = klass.prototype.$methods || [];\n klass.prototype.$methods[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a signal. To emit the signal on\n * the bus to listeners, just call the decorated method and the signal will be\n * emitted with the returned value with types specified by the `signature` in\n * the signal options. If the signal has multiple output parameters, they\n * should be returned in an array.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * // uncomment the decorators to use them (jsdoc bug)\n * class MyInterface extends Interface {\n * //@signal({signature: 's'})\n * HelloWorld(value) {\n * return value;\n * }\n *\n * //@signal({signature: 'ss'})\n * SignalMultiple(x) {\n * return [\n * 'hello',\n * 'world'\n * ];\n * }\n * }\n *\n * @param {object} options - The options for this property.\n * @param {string} options.signature - The DBus type signature for this signal.\n * @param {string} [options.name] - The name of this signal on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction signal (options) {\n // TODO introspect the names of the arguments for the function:\n // https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\n options.signature = options.signature || '';\n options.signatureTree = parseSignature(options.signature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n options.fn = descriptor.descriptor.value;\n descriptor.descriptor.value = function () {\n if (options.disabled) {\n throw new Error('tried to call a disabled signal');\n }\n const result = options.fn.apply(this, arguments);\n this.$emitter.emit('signal', options, result);\n };\n descriptor.finisher = function (klass) {\n klass.prototype.$signals = klass.prototype.$signals || [];\n klass.prototype.$signals[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * The `Interface` is an abstract class used for defining and exporting an\n * interface on a DBus name. You can override this class to make your own DBus\n * interfaces. Use the decorators within this module to define the\n * [properties]{@link module:interface.property}, [methods]{@link\n * module:interface.method}, and [signals]{@link module:interface.signal} that\n * the interface has. These will be advertised to users in the introspection\n * xml gotten by the `org.freedesktop.DBus.Introspect` method on the name. See\n * the documentation for the decorators for more information. The constructor\n * of the `Interface` should call `super()` with the name of the interface that\n * will be exported.\n *\n * @example\n * class MyInterface extends Interface {\n * constructor() {\n * super('org.test.interface_name');\n * }\n * // define properties, methods, and signals with decorated functions\n * }\n * let bus = dbus.sessionBus();\n * let name = await bus.requestName('org.test.bus_name');\n * let iface = new MyInterface();\n * name.export('/org/test/path', iface);\n */\nclass Interface {\n /**\n * Create an interface. This should be called with the name of the interface\n * in the class that extends it.\n */\n constructor (name) {\n assertInterfaceNameValid(name);\n this.$name = name;\n this.$emitter = new EventEmitter();\n }\n\n /**\n * An alternative to the decorator functions to configure\n * [`Interface`]{@link module:interface~Interface} DBus members when\n * decorators cannot be supported.\n *\n * *Calling this method twice on the same `Interface` or mixing this method\n * with the decorator interface will result in undefined behavior that may be\n * specified at a future time.*\n *\n * @static\n * @example\n * ConfiguredInterface.configureMembers({\n * properties: {\n * SomeProperty: {\n * signature: 's'\n * }\n * },\n * methods: {\n * Echo: {\n * inSignature: 'v',\n * outSignature: 'v'\n * }\n * },\n * signals: {\n * HelloWorld: {\n * signature: 'ss'\n * }\n * }\n * });\n *\n * @param members {Object} - Member configuration object.\n * @param members.properties {Object} - The class methods to define as\n * properties. The key should be a method defined on the class and the value\n * should be the options for a [property]{@link module:interface.property}\n * decorator.\n * @param members.methods {Object} - The class methods to define as DBus\n * methods. The key should be a method defined on the class and the value\n * should be the options for a [method]{@link module:interface.method}\n * decorator.\n * @param members.signals {Object} - The class methods to define as signals.\n * The key should be a method defined on the class and hte value should be\n * options for a [signal]{@link module:interface.signal} decorator.\n */\n static configureMembers (members) {\n const properties = members.properties || {};\n const methods = members.methods || {};\n const signals = members.signals || {};\n\n this.prototype.$properties = {};\n this.prototype.$methods = {};\n this.prototype.$signals = {};\n\n for (const k of Object.keys(properties)) {\n const options = properties[k];\n options.name = options.name || k;\n options.access = options.access || ACCESS_READWRITE;\n if (!options.signature) {\n throw new Error('missing signature for property');\n }\n options.signatureTree = parseSignature(options.signature);\n assertMemberNameValid(options.name);\n this.prototype.$properties[options.name] = options;\n }\n\n for (const k of Object.keys(methods)) {\n const options = methods[k];\n options.name = options.name || k;\n assertMemberNameValid(options.name);\n options.disabled = !!options.disabled;\n options.inSignature = options.inSignature || '';\n options.outSignature = options.outSignature || '';\n options.inSignatureTree = parseSignature(options.inSignature);\n options.outSignatureTree = parseSignature(options.outSignature);\n options.fn = this.prototype[k];\n this.prototype.$methods[options.name] = options;\n }\n\n for (const k of Object.keys(signals)) {\n const options = signals[k];\n options.name = options.name || k;\n assertMemberNameValid(options.name);\n options.fn = this.prototype[k];\n options.signature = options.signature || '';\n options.signatureTree = parseSignature(options.signature);\n this.prototype[k] = function () {\n if (options.disabled) {\n throw new Error('tried to call a disabled signal');\n }\n const result = options.fn.apply(this, arguments);\n this.$emitter.emit('signal', options, result);\n };\n this.prototype.$signals[options.name] = options;\n }\n }\n\n /**\n * Emit the `PropertiesChanged` signal on an [`Interface`s]{@link\n * module:interface~Interface} associated standard\n * `org.freedesktop.DBus.Properties` interface with a map of new values and\n * invalidated properties. Pass the properties as JavaScript values.\n *\n * @static\n * @example\n * Interface.emitPropertiesChanged({ SomeProperty: 'bar' }, ['InvalidedProperty']);\n *\n * @param {module:interface~Interface} - the `Interface` to emit the `PropertiesChanged` signal on\n * @param {Object} - A map of property names and new property values that are changed.\n * @param {string[]} - A list of invalidated properties.\n */\n static emitPropertiesChanged (iface, changedProperties, invalidatedProperties = []) {\n if (!Array.isArray(invalidatedProperties) ||\n !invalidatedProperties.every((p) => typeof p === 'string')) {\n throw new Error('invalidated properties must be an array of strings');\n }\n\n // we transform them to variants here based on property signatures so they\n // don't have to\n const properties = iface.$properties || {};\n const changedPropertiesVariants = {};\n for (const p of Object.keys(changedProperties)) {\n if (properties[p] === undefined) {\n throw new Error(`got properties changed with unknown property: ${p}`);\n }\n changedPropertiesVariants[p] = new Variant(properties[p].signature, changedProperties[p]);\n }\n iface.$emitter.emit('properties-changed', changedPropertiesVariants, invalidatedProperties);\n }\n\n $introspect () {\n // TODO cache xml when the interface is declared\n const xml = {\n $: {\n name: this.$name\n }\n };\n\n const properties = this.$properties || {};\n for (const p of Object.keys(properties) || []) {\n const property = properties[p];\n if (property.disabled) {\n continue;\n }\n xml.property = xml.property || [];\n xml.property.push({\n $: {\n name: property.name,\n type: property.signature,\n access: property.access\n }\n });\n }\n\n const methods = this.$methods || {};\n for (const m of Object.keys(methods) || []) {\n const method = methods[m];\n if (method.disabled) {\n continue;\n }\n\n xml.method = xml.method || [];\n const methodXml = {\n $: {\n name: method.name\n },\n arg: [],\n annotation: []\n };\n\n for (const signature of method.inSignatureTree) {\n methodXml.arg.push({\n $: {\n direction: 'in',\n type: collapseSignature(signature)\n }\n });\n }\n\n for (const signature of method.outSignatureTree) {\n methodXml.arg.push({\n $: {\n direction: 'out',\n type: collapseSignature(signature)\n }\n });\n }\n\n if (method.noReply) {\n methodXml.annotation.push({\n $: {\n name: 'org.freedesktop.DBus.Method.NoReply',\n value: 'true'\n }\n });\n }\n\n xml.method.push(methodXml);\n }\n\n const signals = this.$signals || {};\n for (const s of Object.keys(signals) || []) {\n const signal = signals[s];\n if (signal.disabled) {\n continue;\n }\n xml.signal = xml.signal || [];\n const signalXml = {\n $: {\n name: signal.name\n },\n arg: []\n };\n\n for (const signature of signal.signatureTree) {\n signalXml.arg.push({\n $: {\n type: collapseSignature(signature)\n }\n });\n }\n\n xml.signal.push(signalXml);\n }\n\n return xml;\n }\n}\n\nmodule.exports = {\n ACCESS_READ: ACCESS_READ,\n ACCESS_WRITE: ACCESS_WRITE,\n ACCESS_READWRITE: ACCESS_READWRITE,\n property: property,\n method: method,\n signal: signal,\n Interface: Interface\n};\n","const { assertInterfaceNameValid } = require('./validators');\n/**\n * An error that can be thrown from DBus [`Interface`]{@link\n * module:interface~Interface} [methods]{@link module:interface.method} and\n * [property]{@link module:interface.property} getters and setters to return\n * the error to the client.\n *\n * This class will also be thrown by {@link ProxyInterface} method calls when\n * the interface method returns an error to the method call.\n *\n * @param {string} type - The type of error. Must be a valid DBus member name.\n * @param {string} text - The error text. Will be seen by the client.\n */\nclass DBusError extends Error {\n /**\n * Construct a new `DBusError` with the given type and text.\n */\n constructor (type, text, reply = null) {\n assertInterfaceNameValid(type);\n text = text || '';\n super(text);\n this.name = 'DBusError';\n this.type = type;\n this.text = text;\n this.reply = reply;\n }\n}\n\nmodule.exports = {\n DBusError: DBusError\n};\n","const fs = require('fs');\nconst variant = require('../variant');\nconst Variant = variant.Variant;\nconst { Message } = require('../message-type');\n\nconst {\n isObjectPathValid,\n isInterfaceNameValid,\n isMemberNameValid\n} = require('../validators');\n\nconst {\n ACCESS_READ,\n ACCESS_WRITE,\n ACCESS_READWRITE\n} = require('./interface');\n\nconst constants = require('../constants');\n\nconst {\n METHOD_RETURN\n} = constants.MessageType;\n\nconst { DBusError } = require('../errors');\n\nconst INVALID_ARGS = 'org.freedesktop.DBus.Error.InvalidArgs';\n\nfunction sendServiceError (bus, msg, errorMessage) {\n bus.send(Message.newError(msg, 'com.github.dbus_next.ServiceError', `Service error: ${errorMessage}`));\n return true;\n}\n\nfunction handleIntrospect (bus, msg, path) {\n bus.send(Message.newMethodReturn(msg, 's', [bus._introspect(path)]));\n}\n\nfunction handleGetProperty (bus, msg, path) {\n const [ifaceName, prop] = msg.body;\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n // TODO An empty string may be provided for the interface name; in this case,\n // if there are multiple properties on an object with the same name, the\n // results are undefined (picking one by according to an arbitrary\n // deterministic rule, or returning an error, are the reasonable\n // possibilities).\n if (!iface) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such interface: '${ifaceName}'`));\n return;\n }\n\n const properties = iface.$properties || {};\n\n let options = null;\n let propertyKey = null;\n for (const k of Object.keys(properties)) {\n if (properties[k].name === prop && !properties[k].disabled) {\n options = properties[k];\n propertyKey = k;\n break;\n }\n }\n if (options === null) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such property: '${prop}'`));\n return;\n }\n\n let propertyValue = null;\n\n try {\n propertyValue = iface[propertyKey];\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n\n if (propertyValue instanceof DBusError) {\n bus.send(Message.newError(msg, propertyValue.type, propertyValue.text));\n return true;\n } else if (propertyValue === undefined) {\n return sendServiceError(bus, msg, 'tried to get a property that is not set: ' + prop);\n }\n\n if (!(options.access === ACCESS_READWRITE ||\n options.access === ACCESS_READ)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Property does not have read access: '${prop}'`));\n }\n\n const body = new Variant(options.signature, propertyValue);\n\n bus.send(Message.newMethodReturn(msg, 'v', [body]));\n}\n\nfunction handleGetAllProperties (bus, msg, path) {\n const ifaceName = msg.body[0];\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n const result = {};\n if (iface) {\n const properties = iface.$properties || {};\n for (const k of Object.keys(properties)) {\n const p = properties[k];\n if (!(p.access === ACCESS_READ || p.access === ACCESS_READWRITE) || p.disabled) {\n continue;\n }\n\n let value;\n try {\n value = iface[k];\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n if (value instanceof DBusError) {\n bus.send(Message.newError(msg, value.type, value.text));\n return true;\n } else if (value === undefined) {\n return sendServiceError(bus, msg, 'tried to get a property that is not set: ' + p);\n }\n\n result[p.name] = new Variant(p.signature, value);\n }\n }\n\n bus.send(Message.newMethodReturn(msg, 'a{sv}', [result]));\n}\n\nfunction handleSetProperty (bus, msg, path) {\n const [ifaceName, prop, value] = msg.body;\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n if (!iface) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Interface not found: '${ifaceName}'`));\n return;\n }\n\n const properties = iface.$properties || {};\n let options = null;\n let propertyKey = null;\n for (const k of Object.keys(properties)) {\n if (properties[k].name === prop && !properties[k].disabled) {\n options = properties[k];\n propertyKey = k;\n break;\n }\n }\n\n if (options === null) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such property: '${prop}'`));\n return;\n }\n\n if (!(options.access === ACCESS_WRITE || options.access === ACCESS_READWRITE)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Property does not have write access: '${prop}'`));\n }\n\n if (value.signature !== options.signature) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Cannot set property '${prop}' with signature '${value.signature}' (expected '${options.signature}')`));\n return;\n }\n\n try {\n iface[propertyKey] = value.value;\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n\n bus.send(Message.newMethodReturn(msg, '', []));\n}\n\nfunction handleStdIfaces (bus, msg) {\n const {\n member,\n path,\n signature\n } = msg;\n\n const ifaceName = msg.interface;\n\n if (!isInterfaceNameValid(ifaceName)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid interface name: '${ifaceName}'`));\n return true;\n }\n\n if (!isMemberNameValid(member)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid member name: '${member}'`));\n return true;\n }\n\n if (!isObjectPathValid(path)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid path name: '${path}'`));\n return true;\n }\n\n if (ifaceName === 'org.freedesktop.DBus.Introspectable' &&\n member === 'Introspect' &&\n !signature) {\n handleIntrospect(bus, msg, path);\n return true;\n } else if (ifaceName === 'org.freedesktop.DBus.Properties') {\n if (member === 'Get' && signature === 'ss') {\n handleGetProperty(bus, msg, path);\n return true;\n } else if (member === 'Set' && signature === 'ssv') {\n handleSetProperty(bus, msg, path);\n return true;\n } else if (member === 'GetAll') {\n handleGetAllProperties(bus, msg, path);\n return true;\n }\n } else if (ifaceName === 'org.freedesktop.DBus.Peer') {\n if (member === 'Ping' && !signature) {\n bus._connection.message({\n type: METHOD_RETURN,\n serial: bus._serial++,\n replySerial: msg.serial,\n destination: msg.sender\n });\n return true;\n } else if (member === 'GetMachineId' && !signature) {\n const machineId = fs.readFileSync('/var/lib/dbus/machine-id').toString().trim();\n bus._connection.message({\n type: METHOD_RETURN,\n serial: bus._serial++,\n replySerial: msg.serial,\n destination: msg.sender,\n signature: 's',\n body: [machineId]\n });\n return true;\n }\n }\n\n return false;\n}\n\nfunction handleMessage (msg, bus) {\n let {\n path,\n member,\n signature\n } = msg;\n\n const ifaceName = msg.interface;\n\n signature = signature || '';\n\n if (handleStdIfaces(bus, msg)) {\n return true;\n }\n\n if (!bus._serviceObjects[path]) {\n return false;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n if (!iface) {\n return false;\n }\n\n const methods = iface.$methods || {};\n for (const m of Object.keys(methods)) {\n const method = methods[m];\n let result = null;\n\n const handleError = (e) => {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n };\n\n if (method.name === member && method.inSignature === signature) {\n try {\n result = method.fn.apply(iface, msg.body);\n } catch (e) {\n handleError(e);\n return true;\n }\n\n const sendReply = (body) => {\n if (method.noReply) return;\n if (body === undefined) {\n body = [];\n } else if (method.outSignatureTree.length === 1) {\n body = [body];\n } else if (method.outSignatureTree.length === 0) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${method.name} was not expected to return a body.`);\n } else if (!Array.isArray(body)) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${method.name} expected to return multiple arguments in an array (signature: '${method.outSignature}')`);\n }\n\n if (method.outSignatureTree.length !== body.length) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${m} returned the wrong number of arguments (got ${body.length} expected ${method.outSignatureTree.length}) for signature '${method.outSignature}'`);\n }\n\n bus.send(Message.newMethodReturn(msg, method.outSignature, body));\n };\n\n if (result && result.constructor === Promise) {\n result.then(sendReply).catch(handleError);\n } else {\n sendReply(result);\n }\n\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = handleMessage;\n","const { Message } = require('../message-type');\nconst Interface = require('./interface').Interface;\nconst assertObjectPathValid = require('../validators').assertObjectPathValid;\n\nclass ServiceObject {\n constructor (path, bus) {\n assertObjectPathValid(path);\n this.path = path;\n this.bus = bus;\n this.interfaces = {};\n this._handlers = {};\n }\n\n addInterface (iface) {\n if (!(iface instanceof Interface)) {\n throw new Error(`object.addInterface takes an Interface as the first argument (got ${iface})`);\n }\n if (this.interfaces[iface.$name]) {\n throw new Error(`an interface with name '${iface.$name}' is already exported on this object`);\n }\n this.interfaces[iface.$name] = iface;\n const that = this;\n\n const propertiesChangedHandler = function (changedProperties, invalidatedProperties) {\n const body = [\n iface.$name,\n changedProperties,\n invalidatedProperties\n ];\n that.bus.send(Message.newSignal(that.path, 'org.freedesktop.DBus.Properties', 'PropertiesChanged', 'sa{sv}as', body));\n };\n\n const signalHandler = function (options, result) {\n // TODO lots of repeated code with the method handler here\n const {\n signature,\n signatureTree,\n name\n } = options;\n if (result === undefined) {\n result = [];\n } else if (signatureTree.length === 1) {\n result = [result];\n } else if (!Array.isArray(result)) {\n throw new Error(`signal ${iface.$name}.${name} expected to return multiple arguments in an array (signature: '${signature}')`);\n }\n\n if (signatureTree.length !== result.length) {\n throw new Error(`signal ${iface.$name}.${name} returned the wrong number of arguments (got ${result.length} expected ${signatureTree.length}) for signature '${signature}'`);\n }\n\n that.bus.send(Message.newSignal(that.path, iface.$name, name, signature, result));\n };\n\n this._handlers[iface.$name] = {\n propertiesChanged: propertiesChangedHandler,\n signal: signalHandler\n };\n\n iface.$emitter.on('signal', signalHandler);\n iface.$emitter.on('properties-changed', propertiesChangedHandler);\n }\n\n removeInterface (iface) {\n if (!(iface instanceof Interface)) {\n throw new Error(`object.removeInterface takes an Interface as the first argument (got ${iface})`);\n }\n if (!this.interfaces[iface.$name]) {\n throw new Error(`Interface ${iface.$name} not exported on this object`);\n }\n const handlers = this._handlers[iface.$name];\n iface.$emitter.removeListener('signal', handlers.signal);\n iface.$emitter.removeListener('properties-changed', handlers.propertiesChanged);\n delete this._handlers[iface.$name];\n delete this.interfaces[iface.$name];\n }\n\n introspect () {\n const interfaces = ServiceObject.defaultInterfaces();\n\n for (const i of Object.keys(this.interfaces)) {\n const iface = this.interfaces[i];\n interfaces.push(iface.$introspect());\n }\n\n return interfaces;\n }\n\n static defaultInterfaces () {\n return [\n {\n $: { name: 'org.freedesktop.DBus.Introspectable' },\n method: [\n {\n $: { name: 'Introspect' },\n arg: [\n {\n $: { name: 'data', direction: 'out', type: 's' }\n }\n ]\n }\n ]\n },\n {\n $: { name: 'org.freedesktop.DBus.Peer' },\n method: [\n {\n $: { name: 'GetMachineId' },\n arg: [\n { $: { direction: 'out', name: 'machine_uuid', type: 's' } }\n ]\n },\n {\n $: { name: 'Ping' }\n }\n ]\n },\n {\n $: { name: 'org.freedesktop.DBus.Properties' },\n method: [\n {\n $: { name: 'Get' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'out', type: 'v' } }\n ]\n },\n {\n $: { name: 'Set' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 'v' } }\n ]\n },\n {\n $: { name: 'GetAll' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'out', type: 'a{sv}' } }\n ]\n }\n ],\n signal: [\n {\n $: { name: 'PropertiesChanged' },\n arg: [\n { $: { type: 's' } },\n { $: { type: 'a{sv}' } },\n { $: { type: 'as' } }\n ]\n }\n ]\n }\n ];\n }\n}\n\nmodule.exports = ServiceObject;\n","// Generated by CoffeeScript 1.12.7\n(function() {\n exports.defaults = {\n \"0.1\": {\n explicitCharkey: false,\n trim: true,\n normalize: true,\n normalizeTags: false,\n attrkey: \"@\",\n charkey: \"#\",\n explicitArray: false,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: false,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n childkey: '@@',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n emptyTag: ''\n },\n \"0.2\": {\n explicitCharkey: false,\n trim: false,\n normalize: false,\n normalizeTags: false,\n attrkey: \"$\",\n charkey: \"_\",\n explicitArray: true,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: true,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n preserveChildrenOrder: false,\n childkey: '$$',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n rootName: 'root',\n xmldec: {\n 'version': '1.0',\n 'encoding': 'UTF-8',\n 'standalone': true\n },\n doctype: null,\n renderOpts: {\n 'pretty': true,\n 'indent': ' ',\n 'newline': '\\n'\n },\n headless: false,\n chunkSize: 10000,\n emptyTag: '',\n cdata: false\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n getValue = function(obj) {\n if (isFunction(obj.valueOf)) {\n return obj.valueOf();\n } else {\n return obj;\n }\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n module.exports.getValue = getValue;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMImplementation;\n\n module.exports = XMLDOMImplementation = (function() {\n function XMLDOMImplementation() {}\n\n XMLDOMImplementation.prototype.hasFeature = function(feature, version) {\n return true;\n };\n\n XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createHTMLDocument = function(title) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLDOMImplementation;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMErrorHandler;\n\n module.exports = XMLDOMErrorHandler = (function() {\n function XMLDOMErrorHandler() {}\n\n XMLDOMErrorHandler.prototype.handleError = function(error) {\n throw new Error(error);\n };\n\n return XMLDOMErrorHandler;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMStringList;\n\n module.exports = XMLDOMStringList = (function() {\n function XMLDOMStringList(arr) {\n this.arr = arr || [];\n }\n\n Object.defineProperty(XMLDOMStringList.prototype, 'length', {\n get: function() {\n return this.arr.length;\n }\n });\n\n XMLDOMStringList.prototype.item = function(index) {\n return this.arr[index] || null;\n };\n\n XMLDOMStringList.prototype.contains = function(str) {\n return this.arr.indexOf(str) !== -1;\n };\n\n return XMLDOMStringList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;\n\n XMLDOMErrorHandler = require('./XMLDOMErrorHandler');\n\n XMLDOMStringList = require('./XMLDOMStringList');\n\n module.exports = XMLDOMConfiguration = (function() {\n function XMLDOMConfiguration() {\n var clonedSelf;\n this.defaultParams = {\n \"canonical-form\": false,\n \"cdata-sections\": false,\n \"comments\": false,\n \"datatype-normalization\": false,\n \"element-content-whitespace\": true,\n \"entities\": true,\n \"error-handler\": new XMLDOMErrorHandler(),\n \"infoset\": true,\n \"validate-if-schema\": false,\n \"namespaces\": true,\n \"namespace-declarations\": true,\n \"normalize-characters\": false,\n \"schema-location\": '',\n \"schema-type\": '',\n \"split-cdata-sections\": true,\n \"validate\": false,\n \"well-formed\": true\n };\n this.params = clonedSelf = Object.create(this.defaultParams);\n }\n\n Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {\n get: function() {\n return new XMLDOMStringList(Object.keys(this.defaultParams));\n }\n });\n\n XMLDOMConfiguration.prototype.getParameter = function(name) {\n if (this.params.hasOwnProperty(name)) {\n return this.params[name];\n } else {\n return null;\n }\n };\n\n XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {\n return true;\n };\n\n XMLDOMConfiguration.prototype.setParameter = function(name, value) {\n if (value != null) {\n return this.params[name] = value;\n } else {\n return delete this.params[name];\n }\n };\n\n return XMLDOMConfiguration;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Element: 1,\n Attribute: 2,\n Text: 3,\n CData: 4,\n EntityReference: 5,\n EntityDeclaration: 6,\n ProcessingInstruction: 7,\n Comment: 8,\n Document: 9,\n DocType: 10,\n DocumentFragment: 11,\n NotationDeclaration: 12,\n Declaration: 201,\n Raw: 202,\n AttributeDeclaration: 203,\n ElementDeclaration: 204,\n Dummy: 205\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLNode;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.value = this.stringify.attValue(value);\n this.type = NodeType.Attribute;\n this.isId = false;\n this.schemaTypeInfo = null;\n }\n\n Object.defineProperty(XMLAttribute.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'specified', {\n get: function() {\n return true;\n }\n });\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.attribute(this, this.options.writer.filterOptions(options));\n };\n\n XMLAttribute.prototype.debugInfo = function(name) {\n name = name || this.name;\n if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else {\n return \"attribute: {\" + name + \"}, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLAttribute.prototype.isEqualNode = function(node) {\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.value !== this.value) {\n return false;\n }\n return true;\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNamedNodeMap;\n\n module.exports = XMLNamedNodeMap = (function() {\n function XMLNamedNodeMap(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {\n get: function() {\n return Object.keys(this.nodes).length || 0;\n }\n });\n\n XMLNamedNodeMap.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItem = function(name) {\n return this.nodes[name];\n };\n\n XMLNamedNodeMap.prototype.setNamedItem = function(node) {\n var oldNode;\n oldNode = this.nodes[node.nodeName];\n this.nodes[node.nodeName] = node;\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.removeNamedItem = function(name) {\n var oldNode;\n oldNode = this.nodes[name];\n delete this.nodes[name];\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.item = function(index) {\n return this.nodes[Object.keys(this.nodes)[index]] || null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLNamedNodeMap;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n var child, j, len, ref1;\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name. \" + this.debugInfo());\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.Element;\n this.attribs = {};\n this.schemaTypeInfo = null;\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.type === NodeType.Document) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n if (parent.children) {\n ref1 = parent.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n if (child.type === NodeType.DocType) {\n child.name = this.name;\n break;\n }\n }\n }\n }\n }\n\n Object.defineProperty(XMLElement.prototype, 'tagName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'id', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'className', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'classList', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'attributes', {\n get: function() {\n if (!this.attributeMap || !this.attributeMap.nodes) {\n this.attributeMap = new XMLNamedNodeMap(this.attribs);\n }\n return this.attributeMap;\n }\n });\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attribs = {};\n ref1 = this.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attribs[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, j, len;\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo());\n }\n name = getValue(name);\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n attName = name[j];\n delete this.attribs[attName];\n }\n } else {\n delete this.attribs[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.element(this, this.options.writer.filterOptions(options));\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.getAttribute = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].value;\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttribute = function(name, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNode = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name];\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttributeNode = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNode = function(oldAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNodeNS = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.hasAttribute = function(name) {\n return this.attribs.hasOwnProperty(name);\n };\n\n XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttribute = function(name, isId) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].isId;\n } else {\n return isId;\n }\n };\n\n XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.isEqualNode = function(node) {\n var i, j, ref1;\n if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.attribs.length !== this.attribs.length) {\n return false;\n }\n for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {\n if (!this.attribs[i].isEqualNode(node.attribs[i])) {\n return false;\n }\n }\n return true;\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCharacterData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCharacterData = (function(superClass) {\n extend(XMLCharacterData, superClass);\n\n function XMLCharacterData(parent) {\n XMLCharacterData.__super__.constructor.call(this, parent);\n this.value = '';\n }\n\n Object.defineProperty(XMLCharacterData.prototype, 'data', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'length', {\n get: function() {\n return this.value.length;\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n XMLCharacterData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCharacterData.prototype.substringData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.appendData = function(arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.insertData = function(offset, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.deleteData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.replaceData = function(offset, count, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.isEqualNode = function(node) {\n if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.data !== this.data) {\n return false;\n }\n return true;\n };\n\n return XMLCharacterData;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCData, XMLCharacterData,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text. \" + this.debugInfo());\n }\n this.name = \"#cdata-section\";\n this.type = NodeType.CData;\n this.value = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.cdata(this, this.options.writer.filterOptions(options));\n };\n\n return XMLCData;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLComment,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text. \" + this.debugInfo());\n }\n this.name = \"#comment\";\n this.type = NodeType.Comment;\n this.value = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.comment(this, this.options.writer.filterOptions(options));\n };\n\n return XMLComment;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.type = NodeType.Declaration;\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.declaration(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name. \" + this.debugInfo(elementName));\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type. \" + this.debugInfo(elementName));\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default. \" + this.debugInfo(elementName));\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n this.elementName = this.stringify.name(elementName);\n this.type = NodeType.AttributeDeclaration;\n this.attributeName = this.stringify.name(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n if (defaultValue) {\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n }\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD entity name. \" + this.debugInfo(name));\n }\n if (value == null) {\n throw new Error(\"Missing DTD entity value. \" + this.debugInfo(name));\n }\n this.pe = !!pe;\n this.name = this.stringify.name(name);\n this.type = NodeType.EntityDeclaration;\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n this.internal = true;\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity. \" + this.debugInfo(name));\n }\n this.internal = false;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity. \" + this.debugInfo(name));\n }\n }\n }\n\n Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {\n get: function() {\n return this.nData || null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {\n get: function() {\n return null;\n }\n });\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.ElementDeclaration;\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD notation name. \" + this.debugInfo(name));\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.NotationDeclaration;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var child, i, len, ref, ref1, ref2;\n XMLDocType.__super__.constructor.call(this, parent);\n this.type = NodeType.DocType;\n if (parent.children) {\n ref = parent.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.Element) {\n this.name = child.name;\n break;\n }\n }\n }\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;\n }\n if (sysID == null) {\n ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n Object.defineProperty(XMLDocType.prototype, 'entities', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if ((child.type === NodeType.EntityDeclaration) && !child.pe) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'notations', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.NotationDeclaration) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'internalSubset', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.docType(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n XMLDocType.prototype.isEqualNode = function(node) {\n if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.name !== this.name) {\n return false;\n }\n if (node.publicId !== this.publicId) {\n return false;\n }\n if (node.systemId !== this.systemId) {\n return false;\n }\n return true;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text. \" + this.debugInfo());\n }\n this.type = NodeType.Raw;\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.raw(this, this.options.writer.filterOptions(options));\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text. \" + this.debugInfo());\n }\n this.name = \"#text\";\n this.type = NodeType.Text;\n this.value = this.stringify.text(text);\n }\n\n Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLText.prototype, 'wholeText', {\n get: function() {\n var next, prev, str;\n str = '';\n prev = this.previousSibling;\n while (prev) {\n str = prev.data + str;\n prev = prev.previousSibling;\n }\n str += this.data;\n next = this.nextSibling;\n while (next) {\n str = str + next.data;\n next = next.nextSibling;\n }\n return str;\n }\n });\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.text(this, this.options.writer.filterOptions(options));\n };\n\n XMLText.prototype.splitText = function(offset) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLText.prototype.replaceWholeText = function(content) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLText;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target. \" + this.debugInfo());\n }\n this.type = NodeType.ProcessingInstruction;\n this.target = this.stringify.insTarget(target);\n this.name = this.target;\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));\n };\n\n XMLProcessingInstruction.prototype.isEqualNode = function(node) {\n if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.target !== this.target) {\n return false;\n }\n return true;\n };\n\n return XMLProcessingInstruction;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDummy, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDummy = (function(superClass) {\n extend(XMLDummy, superClass);\n\n function XMLDummy(parent) {\n XMLDummy.__super__.constructor.call(this, parent);\n this.type = NodeType.Dummy;\n }\n\n XMLDummy.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLDummy.prototype.toString = function(options) {\n return '';\n };\n\n return XMLDummy;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNodeList;\n\n module.exports = XMLNodeList = (function() {\n function XMLNodeList(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNodeList.prototype, 'length', {\n get: function() {\n return this.nodes.length || 0;\n }\n });\n\n XMLNodeList.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNodeList.prototype.item = function(index) {\n return this.nodes[index] || null;\n };\n\n return XMLNodeList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Disconnected: 1,\n Preceding: 2,\n Following: 4,\n Contains: 8,\n ContainedBy: 16,\n ImplementationSpecific: 32\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,\n hasProp = {}.hasOwnProperty;\n\n ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n XMLDummy = null;\n\n NodeType = null;\n\n XMLNodeList = null;\n\n XMLNamedNodeMap = null;\n\n DocumentPosition = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent1) {\n this.parent = parent1;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.value = null;\n this.children = [];\n this.baseURI = null;\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n XMLDummy = require('./XMLDummy');\n NodeType = require('./NodeType');\n XMLNodeList = require('./XMLNodeList');\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n DocumentPosition = require('./DocumentPosition');\n }\n }\n\n Object.defineProperty(XMLNode.prototype, 'nodeName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeValue', {\n get: function() {\n return this.value;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'parentNode', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'childNodes', {\n get: function() {\n if (!this.childNodeList || !this.childNodeList.nodes) {\n this.childNodeList = new XMLNodeList(this.children);\n }\n return this.childNodeList;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'firstChild', {\n get: function() {\n return this.children[0] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'lastChild', {\n get: function() {\n return this.children[this.children.length - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'previousSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nextSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i + 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'ownerDocument', {\n get: function() {\n return this.document() || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'textContent', {\n get: function() {\n var child, j, len, ref2, str;\n if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {\n str = '';\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (child.textContent) {\n str += child.textContent;\n }\n }\n return str;\n } else {\n return null;\n }\n },\n set: function(value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLNode.prototype.setParent = function(parent) {\n var child, j, len, ref2, results;\n this.parent = parent;\n if (parent) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n }\n ref2 = this.children;\n results = [];\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n results.push(child.setParent(this));\n }\n return results;\n };\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;\n lastChild = null;\n if (attributes === null && (text == null)) {\n ref2 = [{}, null], attributes = ref2[0], text = ref2[1];\n }\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];\n }\n if (name != null) {\n name = getValue(name);\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {\n lastChild = this.dummy();\n } else if (isObject(val) && isEmpty(val)) {\n lastChild = this.element(key);\n } else if (!this.options.keepNullNodes && (val == null)) {\n lastChild = this.dummy();\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.element(val);\n } else {\n lastChild = this.element(key);\n lastChild.element(val);\n }\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else if (!this.options.keepNullNodes && text === null) {\n lastChild = this.dummy();\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name + \". \" + this.debugInfo());\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, newChild, refChild, removed;\n if (name != null ? name.type : void 0) {\n newChild = name;\n refChild = attributes;\n newChild.setParent(this);\n if (refChild) {\n i = children.indexOf(refChild);\n removed = children.splice(i);\n children.push(newChild);\n Array.prototype.push.apply(children, removed);\n } else {\n children.push(newChild);\n }\n return newChild;\n } else {\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n }\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref2;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element. \" + this.debugInfo());\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref2;\n if (name != null) {\n name = getValue(name);\n }\n attributes || (attributes = {});\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n if (isObject(value)) {\n this.element(value);\n }\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.dummy = function() {\n var child;\n child = new XMLDummy(this);\n return child;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children.length === 0) {\n doc.children.unshift(xmldec);\n } else if (doc.children[0].type === NodeType.Declaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref2, ref3;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref2 = doc.children;\n for (i = j = 0, len = ref2.length; j < len; i = ++j) {\n child = ref2[i];\n if (child.type === NodeType.DocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref3 = doc.children;\n for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {\n child = ref3[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node. \" + this.debugInfo());\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node. \" + this.debugInfo());\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.debugInfo = function(name) {\n var ref2, ref3;\n name = name || this.name;\n if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {\n return \"\";\n } else if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {\n return \"node: <\" + name + \">\";\n } else {\n return \"node: <\" + name + \">, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n XMLNode.prototype.replaceChild = function(newChild, oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.removeChild = function(oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.appendChild = function(newChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.hasChildNodes = function() {\n return this.children.length !== 0;\n };\n\n XMLNode.prototype.cloneNode = function(deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.normalize = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isSupported = function(feature, version) {\n return true;\n };\n\n XMLNode.prototype.hasAttributes = function() {\n return this.attribs.length !== 0;\n };\n\n XMLNode.prototype.compareDocumentPosition = function(other) {\n var ref, res;\n ref = this;\n if (ref === other) {\n return 0;\n } else if (this.document() !== other.document()) {\n res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;\n if (Math.random() < 0.5) {\n res |= DocumentPosition.Preceding;\n } else {\n res |= DocumentPosition.Following;\n }\n return res;\n } else if (ref.isAncestor(other)) {\n return DocumentPosition.Contains | DocumentPosition.Preceding;\n } else if (ref.isDescendant(other)) {\n return DocumentPosition.Contains | DocumentPosition.Following;\n } else if (ref.isPreceding(other)) {\n return DocumentPosition.Preceding;\n } else {\n return DocumentPosition.Following;\n }\n };\n\n XMLNode.prototype.isSameNode = function(other) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupPrefix = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupNamespaceURI = function(prefix) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isEqualNode = function(node) {\n var i, j, ref2;\n if (node.nodeType !== this.nodeType) {\n return false;\n }\n if (node.children.length !== this.children.length) {\n return false;\n }\n for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {\n if (!this.children[i].isEqualNode(node.children[i])) {\n return false;\n }\n }\n return true;\n };\n\n XMLNode.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.setUserData = function(key, data, handler) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.getUserData = function(key) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.contains = function(other) {\n if (!other) {\n return false;\n }\n return other === this || this.isDescendant(other);\n };\n\n XMLNode.prototype.isDescendant = function(node) {\n var child, isDescendantChild, j, len, ref2;\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (node === child) {\n return true;\n }\n isDescendantChild = child.isDescendant(node);\n if (isDescendantChild) {\n return true;\n }\n }\n return false;\n };\n\n XMLNode.prototype.isAncestor = function(node) {\n return node.isDescendant(this);\n };\n\n XMLNode.prototype.isPreceding = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos < thisPos;\n }\n };\n\n XMLNode.prototype.isFollowing = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos > thisPos;\n }\n };\n\n XMLNode.prototype.treePosition = function(node) {\n var found, pos;\n pos = 0;\n found = false;\n this.foreachTreeNode(this.document(), function(childNode) {\n pos++;\n if (!found && childNode === node) {\n return found = true;\n }\n });\n if (found) {\n return pos;\n } else {\n return -1;\n }\n };\n\n XMLNode.prototype.foreachTreeNode = function(node, func) {\n var child, j, len, ref2, res;\n node || (node = this.document());\n ref2 = node.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (res = func(child)) {\n return res;\n } else {\n res = this.foreachTreeNode(child, func);\n if (res) {\n return res;\n }\n }\n }\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalName = bind(this.assertLegalName, this);\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.options = options;\n if (!this.options.version) {\n this.options.version = '1.0';\n }\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.name = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalName('' + val || '');\n };\n\n XMLStringifier.prototype.text = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.textEscape('' + val || ''));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n val = val.replace(']]>', ']]]]><![CDATA[>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.attEscape(val = '' + val || ''));\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var regex, res;\n if (this.options.noValidation) {\n return str;\n }\n regex = '';\n if (this.options.version === '1.0') {\n regex = /[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n } else if (this.options.version === '1.1') {\n regex = /[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n }\n return str;\n };\n\n XMLStringifier.prototype.assertLegalName = function(str) {\n var regex;\n if (this.options.noValidation) {\n return str;\n }\n this.assertLegalChar(str);\n regex = /^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])([\\x2D\\.0-:A-Z_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n if (!str.match(regex)) {\n throw new Error(\"Invalid character in name\");\n }\n return str;\n };\n\n XMLStringifier.prototype.textEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\r/g, '
');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/\"/g, '"').replace(/\\t/g, '	').replace(/\\n/g, '
').replace(/\\r/g, '
');\n };\n\n return XMLStringifier;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n None: 0,\n OpenTag: 1,\n InsideTag: 2,\n CloseTag: 3\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,\n hasProp = {}.hasOwnProperty;\n\n assign = require('./Utility').assign;\n\n NodeType = require('./NodeType');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDummy = require('./XMLDummy');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLWriterBase = (function() {\n function XMLWriterBase(options) {\n var key, ref, value;\n options || (options = {});\n this.options = options;\n ref = options.writer || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[\"_\" + key] = this[key];\n this[key] = value;\n }\n }\n\n XMLWriterBase.prototype.filterOptions = function(options) {\n var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;\n options || (options = {});\n options = assign({}, this.options, options);\n filteredOptions = {\n writer: this\n };\n filteredOptions.pretty = options.pretty || false;\n filteredOptions.allowEmpty = options.allowEmpty || false;\n filteredOptions.indent = (ref = options.indent) != null ? ref : ' ';\n filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\\n';\n filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;\n filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;\n filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';\n if (filteredOptions.spaceBeforeSlash === true) {\n filteredOptions.spaceBeforeSlash = ' ';\n }\n filteredOptions.suppressPrettyCount = 0;\n filteredOptions.user = {};\n filteredOptions.state = WriterState.None;\n return filteredOptions;\n };\n\n XMLWriterBase.prototype.indent = function(node, options, level) {\n var indentLevel;\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else if (options.pretty) {\n indentLevel = (level || 0) + options.offset + 1;\n if (indentLevel > 0) {\n return new Array(indentLevel).join(options.indent);\n }\n }\n return '';\n };\n\n XMLWriterBase.prototype.endline = function(node, options, level) {\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else {\n return options.newline;\n }\n };\n\n XMLWriterBase.prototype.attribute = function(att, options, level) {\n var r;\n this.openAttribute(att, options, level);\n r = ' ' + att.name + '=\"' + att.value + '\"';\n this.closeAttribute(att, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.cdata = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<![CDATA[';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ']]>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.comment = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!-- ';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ' -->' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.declaration = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?xml';\n options.state = WriterState.InsideTag;\n r += ' version=\"' + node.version + '\"';\n if (node.encoding != null) {\n r += ' encoding=\"' + node.encoding + '\"';\n }\n if (node.standalone != null) {\n r += ' standalone=\"' + node.standalone + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.docType = function(node, options, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n r += '<!DOCTYPE ' + node.root().name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children.length > 0) {\n r += ' [';\n r += this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += ']';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;\n level || (level = 0);\n prettySuppressed = false;\n r = '';\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r += this.indent(node, options, level) + '<' + node.name;\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n r += '>';\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n r += '>';\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n r += this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n if (options.dontPrettyTextNodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {\n options.suppressPrettyCount++;\n prettySuppressed = true;\n break;\n }\n }\n }\n r += '>' + this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += this.indent(node, options, level) + '</' + node.name + '>';\n if (prettySuppressed) {\n options.suppressPrettyCount--;\n }\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n }\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.writeChildNode = function(node, options, level) {\n switch (node.type) {\n case NodeType.CData:\n return this.cdata(node, options, level);\n case NodeType.Comment:\n return this.comment(node, options, level);\n case NodeType.Element:\n return this.element(node, options, level);\n case NodeType.Raw:\n return this.raw(node, options, level);\n case NodeType.Text:\n return this.text(node, options, level);\n case NodeType.ProcessingInstruction:\n return this.processingInstruction(node, options, level);\n case NodeType.Dummy:\n return '';\n case NodeType.Declaration:\n return this.declaration(node, options, level);\n case NodeType.DocType:\n return this.docType(node, options, level);\n case NodeType.AttributeDeclaration:\n return this.dtdAttList(node, options, level);\n case NodeType.ElementDeclaration:\n return this.dtdElement(node, options, level);\n case NodeType.EntityDeclaration:\n return this.dtdEntity(node, options, level);\n case NodeType.NotationDeclaration:\n return this.dtdNotation(node, options, level);\n default:\n throw new Error(\"Unknown XML node type: \" + node.constructor.name);\n }\n };\n\n XMLWriterBase.prototype.processingInstruction = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?';\n options.state = WriterState.InsideTag;\n r += node.target;\n if (node.value) {\n r += ' ' + node.value;\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.raw = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.text = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdAttList = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ATTLIST';\n options.state = WriterState.InsideTag;\n r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;\n if (node.defaultValueType !== '#DEFAULT') {\n r += ' ' + node.defaultValueType;\n }\n if (node.defaultValue) {\n r += ' \"' + node.defaultValue + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdElement = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ELEMENT';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name + ' ' + node.value;\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdEntity = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ENTITY';\n options.state = WriterState.InsideTag;\n if (node.pe) {\n r += ' %';\n }\n r += ' ' + node.name;\n if (node.value) {\n r += ' \"' + node.value + '\"';\n } else {\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.nData) {\n r += ' NDATA ' + node.nData;\n }\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdNotation = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!NOTATION';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.pubID) {\n r += ' PUBLIC \"' + node.pubID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.openNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.closeNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.openAttribute = function(att, options, level) {};\n\n XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc, options) {\n var child, i, len, r, ref;\n options = this.filterOptions(options);\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, 0);\n }\n if (options.pretty && r.slice(-options.newline.length) === options.newline) {\n r = r.slice(0, -options.newline.length);\n }\n return r;\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDOMConfiguration = require('./XMLDOMConfiguration');\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n this.name = \"#document\";\n this.type = NodeType.Document;\n this.documentURI = null;\n this.domConfig = new XMLDOMConfiguration();\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n }\n\n Object.defineProperty(XMLDocument.prototype, 'implementation', {\n value: new XMLDOMImplementation()\n });\n\n Object.defineProperty(XMLDocument.prototype, 'doctype', {\n get: function() {\n var child, i, len, ref;\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.DocType) {\n return child;\n }\n }\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'documentElement', {\n get: function() {\n return this.rootObject || null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {\n get: function() {\n return false;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].encoding;\n } else {\n return null;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].standalone === 'yes';\n } else {\n return false;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].version;\n } else {\n return \"1.0\";\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'URL', {\n get: function() {\n return this.documentURI;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'origin', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'compatMode', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'characterSet', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'contentType', {\n get: function() {\n return null;\n }\n });\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n writerOptions = {};\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer;\n }\n return writer.document(this, writer.filterOptions(writerOptions));\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.document(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocument.prototype.createElement = function(tagName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createDocumentFragment = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTextNode = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createComment = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createCDATASection = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createProcessingInstruction = function(target, data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttribute = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEntityReference = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.importNode = function(importedNode, deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementById = function(elementId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.adoptNode = function(source) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.normalizeDocument = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEvent = function(eventInterface) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createRange = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;\n\n NodeType = require('./NodeType');\n\n XMLDocument = require('./XMLDocument');\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n this.name = \"?xml\";\n this.type = NodeType.Document;\n options || (options = {});\n writerOptions = {};\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.writer = options.writer;\n this.writerOptions = this.writer.filterOptions(writerOptions);\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.createChildNode = function(node) {\n var att, attName, attributes, child, i, len, ref1, ref2;\n switch (node.type) {\n case NodeType.CData:\n this.cdata(node.value);\n break;\n case NodeType.Comment:\n this.comment(node.value);\n break;\n case NodeType.Element:\n attributes = {};\n ref1 = node.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n attributes[attName] = att.value;\n }\n this.node(node.name, attributes);\n break;\n case NodeType.Dummy:\n this.dummy();\n break;\n case NodeType.Raw:\n this.raw(node.value);\n break;\n case NodeType.Text:\n this.text(node.value);\n break;\n case NodeType.ProcessingInstruction:\n this.instruction(node.target, node.value);\n break;\n default:\n throw new Error(\"This XML node type is not supported in a JS object: \" + node.constructor.name);\n }\n ref2 = node.children;\n for (i = 0, len = ref2.length; i < len; i++) {\n child = ref2[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.dummy = function() {\n return this;\n };\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name.\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node. \" + this.debugInfo(name));\n }\n this.openCurrent();\n name = getValue(name);\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n var child, i, len, oldValidationFlag, ref1, root;\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n this.dtdElement.apply(this, arguments);\n } else {\n if (Array.isArray(name) || isObject(name) || isFunction(name)) {\n oldValidationFlag = this.options.noValidation;\n this.options.noValidation = true;\n root = new XMLDocument(this.options).element('TEMP_ROOT');\n root.element(name);\n this.options.noValidation = oldValidationFlag;\n ref1 = root.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n } else {\n this.node(name, attributes, text);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode. \" + this.debugInfo(name));\n }\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node.\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name.\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node.\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent.\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n var att, chunk, name, ref1;\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {\n this.root = node;\n }\n chunk = '';\n if (node.type === NodeType.Element) {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;\n ref1 = node.attribs;\n for (name in ref1) {\n if (!hasProp.call(ref1, name)) continue;\n att = ref1[name];\n chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);\n }\n chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;\n if (node.pubID && node.sysID) {\n chunk += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n chunk += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children) {\n chunk += ' [';\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.CloseTag;\n chunk += '>';\n }\n chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.onData(chunk, this.currentLevel);\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n var chunk;\n if (!node.isClosed) {\n chunk = '';\n this.writerOptions.state = WriterState.CloseTag;\n if (node.type === NodeType.Element) {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n } else {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.writerOptions.state = WriterState.None;\n this.onData(chunk, this.currentLevel);\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk, level) {\n this.documentStarted = true;\n return this.onDataCallback(chunk, level + 1);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.debugInfo = function(name) {\n if (name == null) {\n return \"\";\n } else {\n return \"node: <\" + name + \">\";\n }\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n this.stream = stream;\n XMLStreamWriter.__super__.constructor.call(this, options);\n }\n\n XMLStreamWriter.prototype.endline = function(node, options, level) {\n if (node.isLastRootNode && options.state === WriterState.CloseTag) {\n return '';\n } else {\n return XMLStreamWriter.__super__.endline.call(this, node, options, level);\n }\n };\n\n XMLStreamWriter.prototype.document = function(doc, options) {\n var child, i, j, k, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n child = ref[i];\n child.isLastRootNode = i === doc.children.length - 1;\n }\n options = this.filterOptions(options);\n ref1 = doc.children;\n results = [];\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n child = ref1[k];\n results.push(this.writeChildNode(child, options, 0));\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));\n };\n\n XMLStreamWriter.prototype.cdata = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.comment = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.docType = function(node, options, level) {\n var child, j, len, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level));\n this.stream.write('<!DOCTYPE ' + node.root().name);\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n if (node.children.length > 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (j = 0, len = ref.length; j < len; j++) {\n child = ref[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(']');\n }\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '>');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level) + '<' + node.name);\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n this.stream.write('>');\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '/>');\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n this.stream.write('>');\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n this.stream.write('>' + this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref1 = node.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');\n }\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.raw = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.text = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n NodeType = require('./NodeType');\n\n WriterState = require('./WriterState');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name.\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.dtd(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n module.exports.implementation = new XMLDOMImplementation();\n\n module.exports.nodeType = NodeType;\n\n module.exports.writerState = WriterState;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n hasProp = {}.hasOwnProperty;\n\n builder = require('xmlbuilder');\n\n defaults = require('./defaults').defaults;\n\n requiresCDATA = function(entry) {\n return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n };\n\n wrapCDATA = function(entry) {\n return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n };\n\n escapeCDATA = function(entry) {\n return entry.replace(']]>', ']]]]><![CDATA[>');\n };\n\n exports.Builder = (function() {\n function Builder(opts) {\n var key, ref, value;\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n }\n\n Builder.prototype.buildObject = function(rootObj) {\n var attrkey, charkey, render, rootElement, rootName;\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n rootName = Object.keys(rootObj)[0];\n rootObj = rootObj[rootName];\n } else {\n rootName = this.options.rootName;\n }\n render = (function(_this) {\n return function(element, obj) {\n var attr, child, entry, index, key, value;\n if (typeof obj !== 'object') {\n if (_this.options.cdata && requiresCDATA(obj)) {\n element.raw(wrapCDATA(obj));\n } else {\n element.txt(obj);\n }\n } else if (Array.isArray(obj)) {\n for (index in obj) {\n if (!hasProp.call(obj, index)) continue;\n child = obj[index];\n for (key in child) {\n entry = child[key];\n element = render(element.ele(key), entry).up();\n }\n }\n } else {\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n child = obj[key];\n if (key === attrkey) {\n if (typeof child === \"object\") {\n for (attr in child) {\n value = child[attr];\n element = element.att(attr, value);\n }\n }\n } else if (key === charkey) {\n if (_this.options.cdata && requiresCDATA(child)) {\n element = element.raw(wrapCDATA(child));\n } else {\n element = element.txt(child);\n }\n } else if (Array.isArray(child)) {\n for (index in child) {\n if (!hasProp.call(child, index)) continue;\n entry = child[index];\n if (typeof entry === 'string') {\n if (_this.options.cdata && requiresCDATA(entry)) {\n element = element.ele(key).raw(wrapCDATA(entry)).up();\n } else {\n element = element.ele(key, entry).up();\n }\n } else {\n element = render(element.ele(key), entry).up();\n }\n }\n } else if (typeof child === \"object\") {\n element = render(element.ele(key), child).up();\n } else {\n if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n element = element.ele(key).raw(wrapCDATA(child)).up();\n } else {\n if (child == null) {\n child = '';\n }\n element = element.ele(key, child.toString()).up();\n }\n }\n }\n }\n return element;\n };\n })(this);\n rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n headless: this.options.headless,\n allowSurrogateChars: this.options.allowSurrogateChars\n });\n return render(rootElement, rootObj).end(this.options.renderOpts);\n };\n\n return Builder;\n\n })();\n\n}).call(this);\n",";(function (sax) {\n // wrapper for non-node envs\n sax.parser = function (strict, opt) {\n return new SAXParser(strict, opt)\n }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment',\n 'sgmlDecl',\n 'textNode',\n 'tagName',\n 'doctype',\n 'procInstName',\n 'procInstBody',\n 'entity',\n 'attribName',\n 'attribValue',\n 'cdata',\n 'script',\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace',\n ]\n\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.encoding = null;\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.opt.maxEntityCount = parser.opt.maxEntityCount || 512\n parser.opt.maxEntityDepth = parser.opt.maxEntityDepth || 4\n parser.entityCount = parser.entityDepth = 0\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES =\n parser.strictEntities ?\n Object.create(sax.XML_ENTITIES)\n : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F() {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers(parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers(parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () {\n end(this)\n },\n write: write,\n resume: function () {\n this.error = null\n return this\n },\n close: function () {\n return this.write(null)\n },\n flush: function () {\n flushBuffers(this)\n },\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream(strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function determineBufferEncoding(data, isEnd) {\n // BOM-based detection is the most reliable signal when present.\n if (data.length >= 2) {\n if (data[0] === 0xff && data[1] === 0xfe) {\n return 'utf-16le'\n }\n\n if (data[0] === 0xfe && data[1] === 0xff) {\n return 'utf-16be'\n }\n }\n\n if (data.length >= 3 && data[0] === 0xef && data[1] === 0xbb && data[2] === 0xbf) {\n return 'utf8'\n }\n\n if (data.length >= 4) {\n // XML documents without a BOM still start with \"<?xml\", which is enough\n // to distinguish UTF-16LE/BE from UTF-8 by looking at the zero bytes.\n if (data[0] === 0x3c && data[1] === 0x00 && data[2] === 0x3f && data[3] === 0x00) {\n return 'utf-16le'\n }\n\n if (data[0] === 0x00 && data[1] === 0x3c && data[2] === 0x00 && data[3] === 0x3f) {\n return 'utf-16be'\n }\n\n return 'utf8'\n }\n\n return isEnd ? 'utf8' : null\n }\n\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n this._decoderBuffer = null\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false,\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream,\n },\n })\n\n SAXStream.prototype._decodeBuffer = function (data, isEnd) {\n if (this._decoderBuffer) {\n // Keep incomplete leading bytes until we have enough data to infer the\n // stream encoding, then decode the buffered prefix together with the next chunk.\n data = Buffer.concat([this._decoderBuffer, data])\n this._decoderBuffer = null\n }\n\n if (!this._decoder) {\n var encoding = determineBufferEncoding(data, isEnd)\n if (!encoding) {\n // A very short first chunk may not contain enough bytes to detect the\n // encoding yet, so defer decoding until the next write/end call.\n this._decoderBuffer = data\n return ''\n }\n\n // Store the detected transport encoding so strict mode can compare it\n // with the optional encoding declared in the XML prolog later on.\n this._parser.encoding = encoding\n this._decoder = new TextDecoder(encoding)\n }\n\n return this._decoder.decode(data, { stream: !isEnd })\n }\n\n SAXStream.prototype.write = function (data) {\n if (\n typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)\n ) {\n data = this._decodeBuffer(data, false)\n } else if (this._decoderBuffer) {\n // Flush any buffered binary prefix before handling a string chunk.\n // This only matters if the caller mixes Buffer and string writes (used in test).\n var remaining = this._decodeBuffer(Buffer.alloc(0), true)\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n // Flush any remaining decoded data from the TextDecoder\n if (this._decoderBuffer) {\n var finalChunk = this._decodeBuffer(Buffer.alloc(0), true)\n if (finalChunk) {\n this._parser.write(finalChunk)\n this.emit('data', finalChunk)\n }\n } else if (this._decoder) {\n var remaining = this._decoder.decode()\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args =\n arguments.length === 1 ?\n [arguments[0]]\n : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATAre = /^\\[CDATA\\[$/i\n var DOCTYPEre = /^DOCTYPE$/i\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace(c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote(c) {\n return c === '\"' || c === \"'\"\n }\n\n function isAttribEnd(c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch(regex, c) {\n return regex.test(c)\n }\n\n function notMatch(regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++, // <script> ... <\n }\n\n sax.XML_ENTITIES = Object.assign(Object.create(null), {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n })\n\n sax.ENTITIES = Object.assign(Object.create(null), {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n AElig: 198,\n Aacute: 193,\n Acirc: 194,\n Agrave: 192,\n Aring: 197,\n Atilde: 195,\n Auml: 196,\n Ccedil: 199,\n ETH: 208,\n Eacute: 201,\n Ecirc: 202,\n Egrave: 200,\n Euml: 203,\n Iacute: 205,\n Icirc: 206,\n Igrave: 204,\n Iuml: 207,\n Ntilde: 209,\n Oacute: 211,\n Ocirc: 212,\n Ograve: 210,\n Oslash: 216,\n Otilde: 213,\n Ouml: 214,\n THORN: 222,\n Uacute: 218,\n Ucirc: 219,\n Ugrave: 217,\n Uuml: 220,\n Yacute: 221,\n aacute: 225,\n acirc: 226,\n aelig: 230,\n agrave: 224,\n aring: 229,\n atilde: 227,\n auml: 228,\n ccedil: 231,\n eacute: 233,\n ecirc: 234,\n egrave: 232,\n eth: 240,\n euml: 235,\n iacute: 237,\n icirc: 238,\n igrave: 236,\n iuml: 239,\n ntilde: 241,\n oacute: 243,\n ocirc: 244,\n ograve: 242,\n oslash: 248,\n otilde: 245,\n ouml: 246,\n szlig: 223,\n thorn: 254,\n uacute: 250,\n ucirc: 251,\n ugrave: 249,\n uuml: 252,\n yacute: 253,\n yuml: 255,\n copy: 169,\n reg: 174,\n nbsp: 160,\n iexcl: 161,\n cent: 162,\n pound: 163,\n curren: 164,\n yen: 165,\n brvbar: 166,\n sect: 167,\n uml: 168,\n ordf: 170,\n laquo: 171,\n not: 172,\n shy: 173,\n macr: 175,\n deg: 176,\n plusmn: 177,\n sup1: 185,\n sup2: 178,\n sup3: 179,\n acute: 180,\n micro: 181,\n para: 182,\n middot: 183,\n cedil: 184,\n ordm: 186,\n raquo: 187,\n frac14: 188,\n frac12: 189,\n frac34: 190,\n iquest: 191,\n times: 215,\n divide: 247,\n OElig: 338,\n oelig: 339,\n Scaron: 352,\n scaron: 353,\n Yuml: 376,\n fnof: 402,\n circ: 710,\n tilde: 732,\n Alpha: 913,\n Beta: 914,\n Gamma: 915,\n Delta: 916,\n Epsilon: 917,\n Zeta: 918,\n Eta: 919,\n Theta: 920,\n Iota: 921,\n Kappa: 922,\n Lambda: 923,\n Mu: 924,\n Nu: 925,\n Xi: 926,\n Omicron: 927,\n Pi: 928,\n Rho: 929,\n Sigma: 931,\n Tau: 932,\n Upsilon: 933,\n Phi: 934,\n Chi: 935,\n Psi: 936,\n Omega: 937,\n alpha: 945,\n beta: 946,\n gamma: 947,\n delta: 948,\n epsilon: 949,\n zeta: 950,\n eta: 951,\n theta: 952,\n iota: 953,\n kappa: 954,\n lambda: 955,\n mu: 956,\n nu: 957,\n xi: 958,\n omicron: 959,\n pi: 960,\n rho: 961,\n sigmaf: 962,\n sigma: 963,\n tau: 964,\n upsilon: 965,\n phi: 966,\n chi: 967,\n psi: 968,\n omega: 969,\n thetasym: 977,\n upsih: 978,\n piv: 982,\n ensp: 8194,\n emsp: 8195,\n thinsp: 8201,\n zwnj: 8204,\n zwj: 8205,\n lrm: 8206,\n rlm: 8207,\n ndash: 8211,\n mdash: 8212,\n lsquo: 8216,\n rsquo: 8217,\n sbquo: 8218,\n ldquo: 8220,\n rdquo: 8221,\n bdquo: 8222,\n dagger: 8224,\n Dagger: 8225,\n bull: 8226,\n hellip: 8230,\n permil: 8240,\n prime: 8242,\n Prime: 8243,\n lsaquo: 8249,\n rsaquo: 8250,\n oline: 8254,\n frasl: 8260,\n euro: 8364,\n image: 8465,\n weierp: 8472,\n real: 8476,\n trade: 8482,\n alefsym: 8501,\n larr: 8592,\n uarr: 8593,\n rarr: 8594,\n darr: 8595,\n harr: 8596,\n crarr: 8629,\n lArr: 8656,\n uArr: 8657,\n rArr: 8658,\n dArr: 8659,\n hArr: 8660,\n forall: 8704,\n part: 8706,\n exist: 8707,\n empty: 8709,\n nabla: 8711,\n isin: 8712,\n notin: 8713,\n ni: 8715,\n prod: 8719,\n sum: 8721,\n minus: 8722,\n lowast: 8727,\n radic: 8730,\n prop: 8733,\n infin: 8734,\n ang: 8736,\n and: 8743,\n or: 8744,\n cap: 8745,\n cup: 8746,\n int: 8747,\n there4: 8756,\n sim: 8764,\n cong: 8773,\n asymp: 8776,\n ne: 8800,\n equiv: 8801,\n le: 8804,\n ge: 8805,\n sub: 8834,\n sup: 8835,\n nsub: 8836,\n sube: 8838,\n supe: 8839,\n oplus: 8853,\n otimes: 8855,\n perp: 8869,\n sdot: 8901,\n lceil: 8968,\n rceil: 8969,\n lfloor: 8970,\n rfloor: 8971,\n lang: 9001,\n rang: 9002,\n loz: 9674,\n spades: 9824,\n clubs: 9827,\n hearts: 9829,\n diams: 9830,\n })\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit(parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function getDeclaredEncoding(body) {\n var match = body && body.match(/(?:^|\\s)encoding\\s*=\\s*(['\"])([^'\"]+)\\1/i)\n return match ? match[2] : null\n }\n\n function normalizeEncodingName(encoding) {\n if (!encoding) {\n return null\n }\n\n return encoding.toLowerCase().replace(/[^a-z0-9]/g, '')\n }\n\n function encodingsMatch(detectedEncoding, declaredEncoding) {\n const detected = normalizeEncodingName(detectedEncoding)\n const declared = normalizeEncodingName(declaredEncoding)\n\n if (!detected || !declared) {\n return true\n }\n\n if (declared === 'utf16') {\n return detected === 'utf16le' || detected === 'utf16be'\n }\n\n return detected === declared\n }\n\n function validateXmlDeclarationEncoding(parser, data) {\n if (\n !parser.strict ||\n !parser.encoding ||\n !data ||\n data.name !== 'xml'\n ) {\n return\n }\n\n var declaredEncoding = getDeclaredEncoding(data.body)\n if (\n declaredEncoding &&\n !encodingsMatch(parser.encoding, declaredEncoding)\n ) {\n strictFail(\n parser,\n 'XML declaration encoding ' +\n declaredEncoding +\n ' does not match detected stream encoding ' +\n parser.encoding.toUpperCase()\n )\n }\n }\n\n function emitNode(parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText(parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts(opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error(parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er +=\n '\\nLine: ' +\n parser.line +\n '\\nColumn: ' +\n parser.column +\n '\\nChar: ' +\n parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end(parser) {\n if (parser.sawRoot && !parser.closedRoot)\n strictFail(parser, 'Unclosed root tag')\n if (\n parser.state !== S.BEGIN &&\n parser.state !== S.BEGIN_WHITESPACE &&\n parser.state !== S.TEXT\n ) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail(parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag(parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = (parser.tag = { name: parser.tagName, attributes: {} })\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname(name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? ['', name] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib(parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (\n parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)\n ) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(\n parser,\n 'xml: prefix must be bound to ' +\n XML_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else if (\n local === 'xmlns' &&\n parser.attribValue !== XMLNS_NAMESPACE\n ) {\n strictFail(\n parser,\n 'xmlns: prefix must be bound to ' +\n XMLNS_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue,\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag(parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(parser.tagName)\n )\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p],\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : tag.ns[prefix] || ''\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri,\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(prefix)\n )\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag(parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = (parser.tag = parser.tags.pop())\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity(parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (\n isNaN(num) ||\n numStr.toLowerCase() !== entity ||\n num < 0 ||\n num > 0x10ffff ||\n !isXmlChar(num)\n ) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n // Returns true if `num` is a code point that matches the XML `Char`\n // production, false otherwise. Character references that resolve to a\n // character outside this range (e.g. surrogates or restricted control\n // characters) are not well-formed.\n // https://www.w3.org/TR/REC-xml/#NT-Char\n // https://www.w3.org/TR/REC-xml/#wf-Legalchar\n function isXmlChar(num) {\n return (\n num === 0x9 ||\n num === 0xa ||\n num === 0xd ||\n (num >= 0x20 && num <= 0xd7ff) ||\n (num >= 0xe000 && num <= 0xfffd) ||\n (num >= 0x10000 && num <= 0x10ffff)\n )\n }\n\n function beginWhiteSpace(parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt(chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write(chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(\n parser,\n 'Cannot write after close. Assign an onready handler.'\n )\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (\n c === '<' &&\n !(parser.sawRoot && parser.closedRoot && !parser.strict)\n ) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (\n !isWhitespace(c) &&\n (!parser.sawRoot || parser.closedRoot)\n ) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue\n }\n\n if (\n parser.doctype &&\n parser.doctype !== true &&\n parser.sgmlDecl\n ) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if (CDATAre.test(parser.sgmlDecl + c)) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if (DOCTYPEre.test(parser.sgmlDecl + c)) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(\n parser,\n 'Inappropriately located doctype declaration'\n )\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n var starti = i - 1\n while (c && c !== ']') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.cdata += chunk.substring(starti, i - 1)\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n const procInstEndData = {\n name: parser.procInstName,\n body: parser.procInstBody,\n }\n validateXmlDeclarationEncoding(parser, procInstEndData)\n emitNode(parser, 'onprocessinginstruction', procInstEndData)\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(\n parser,\n 'Forward-slash in opening tag not followed by >'\n )\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: '',\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName + c\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (\n parser.opt.unparsedEntities &&\n !Object.values(sax.XML_ENTITIES).includes(parsedEntity)\n ) {\n if ((parser.entityCount += 1) > parser.opt.maxEntityCount) {\n error(\n parser,\n 'Parsed entity count exceeds max entity count'\n )\n }\n\n if ((parser.entityDepth += 1) > parser.opt.maxEntityDepth) {\n error(\n parser,\n 'Parsed entity depth exceeds max entity depth'\n )\n }\n\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n parser.entityDepth -= 1\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (\n isMatch(parser.entity.length ? entityBody : entityStart, c)\n ) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n ;(function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true,\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n })()\n }\n})(typeof exports === 'undefined' ? (this.sax = {}) : exports)\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n exports.stripBOM = function(str) {\n if (str[0] === '\\uFEFF') {\n return str.substring(1);\n } else {\n return str;\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var prefixMatch;\n\n prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n exports.normalize = function(str) {\n return str.toLowerCase();\n };\n\n exports.firstCharLowerCase = function(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n };\n\n exports.stripPrefix = function(str) {\n return str.replace(prefixMatch, '');\n };\n\n exports.parseNumbers = function(str) {\n if (!isNaN(str)) {\n str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n }\n return str;\n };\n\n exports.parseBooleans = function(str) {\n if (/^(?:true|false)$/i.test(str)) {\n str = str.toLowerCase() === 'true';\n }\n return str;\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var bom, defaults, defineProperty, events, isEmpty, processItem, processors, sax, setImmediate,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n sax = require('sax');\n\n events = require('events');\n\n bom = require('./bom');\n\n processors = require('./processors');\n\n setImmediate = require('timers').setImmediate;\n\n defaults = require('./defaults').defaults;\n\n isEmpty = function(thing) {\n return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n };\n\n processItem = function(processors, item, key) {\n var i, len, process;\n for (i = 0, len = processors.length; i < len; i++) {\n process = processors[i];\n item = process(item, key);\n }\n return item;\n };\n\n defineProperty = function(obj, key, value) {\n var descriptor;\n descriptor = Object.create(null);\n descriptor.value = value;\n descriptor.writable = true;\n descriptor.enumerable = true;\n descriptor.configurable = true;\n return Object.defineProperty(obj, key, descriptor);\n };\n\n exports.Parser = (function(superClass) {\n extend(Parser, superClass);\n\n function Parser(opts) {\n this.parseStringPromise = bind(this.parseStringPromise, this);\n this.parseString = bind(this.parseString, this);\n this.reset = bind(this.reset, this);\n this.assignOrPush = bind(this.assignOrPush, this);\n this.processAsync = bind(this.processAsync, this);\n var key, ref, value;\n if (!(this instanceof exports.Parser)) {\n return new exports.Parser(opts);\n }\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n if (this.options.xmlns) {\n this.options.xmlnskey = this.options.attrkey + \"ns\";\n }\n if (this.options.normalizeTags) {\n if (!this.options.tagNameProcessors) {\n this.options.tagNameProcessors = [];\n }\n this.options.tagNameProcessors.unshift(processors.normalize);\n }\n this.reset();\n }\n\n Parser.prototype.processAsync = function() {\n var chunk, err;\n try {\n if (this.remaining.length <= this.options.chunkSize) {\n chunk = this.remaining;\n this.remaining = '';\n this.saxParser = this.saxParser.write(chunk);\n return this.saxParser.close();\n } else {\n chunk = this.remaining.substr(0, this.options.chunkSize);\n this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n this.saxParser = this.saxParser.write(chunk);\n return setImmediate(this.processAsync);\n }\n } catch (error1) {\n err = error1;\n if (!this.saxParser.errThrown) {\n this.saxParser.errThrown = true;\n return this.emit(err);\n }\n }\n };\n\n Parser.prototype.assignOrPush = function(obj, key, newValue) {\n if (!(key in obj)) {\n if (!this.options.explicitArray) {\n return defineProperty(obj, key, newValue);\n } else {\n return defineProperty(obj, key, [newValue]);\n }\n } else {\n if (!(obj[key] instanceof Array)) {\n defineProperty(obj, key, [obj[key]]);\n }\n return obj[key].push(newValue);\n }\n };\n\n Parser.prototype.reset = function() {\n var attrkey, charkey, ontext, stack;\n this.removeAllListeners();\n this.saxParser = sax.parser(this.options.strict, {\n trim: false,\n normalize: false,\n xmlns: this.options.xmlns\n });\n this.saxParser.errThrown = false;\n this.saxParser.onerror = (function(_this) {\n return function(error) {\n _this.saxParser.resume();\n if (!_this.saxParser.errThrown) {\n _this.saxParser.errThrown = true;\n return _this.emit(\"error\", error);\n }\n };\n })(this);\n this.saxParser.onend = (function(_this) {\n return function() {\n if (!_this.saxParser.ended) {\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n this.saxParser.ended = false;\n this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n this.resultObject = null;\n stack = [];\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n this.saxParser.onopentag = (function(_this) {\n return function(node) {\n var key, newValue, obj, processedKey, ref;\n obj = {};\n obj[charkey] = \"\";\n if (!_this.options.ignoreAttrs) {\n ref = node.attributes;\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n obj[attrkey] = {};\n }\n newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];\n processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;\n if (_this.options.mergeAttrs) {\n _this.assignOrPush(obj, processedKey, newValue);\n } else {\n defineProperty(obj[attrkey], processedKey, newValue);\n }\n }\n }\n obj[\"#name\"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;\n if (_this.options.xmlns) {\n obj[_this.options.xmlnskey] = {\n uri: node.uri,\n local: node.local\n };\n }\n return stack.push(obj);\n };\n })(this);\n this.saxParser.onclosetag = (function(_this) {\n return function() {\n var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;\n obj = stack.pop();\n nodeName = obj[\"#name\"];\n if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n delete obj[\"#name\"];\n }\n if (obj.cdata === true) {\n cdata = obj.cdata;\n delete obj.cdata;\n }\n s = stack[stack.length - 1];\n if (obj[charkey].match(/^\\s*$/) && !cdata) {\n emptyStr = obj[charkey];\n delete obj[charkey];\n } else {\n if (_this.options.trim) {\n obj[charkey] = obj[charkey].trim();\n }\n if (_this.options.normalize) {\n obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n if (isEmpty(obj)) {\n if (typeof _this.options.emptyTag === 'function') {\n obj = _this.options.emptyTag();\n } else {\n obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n }\n }\n if (_this.options.validator != null) {\n xpath = \"/\" + ((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = stack.length; i < len; i++) {\n node = stack[i];\n results.push(node[\"#name\"]);\n }\n return results;\n })()).concat(nodeName).join(\"/\");\n (function() {\n var err;\n try {\n return obj = _this.options.validator(xpath, s && s[nodeName], obj);\n } catch (error1) {\n err = error1;\n return _this.emit(\"error\", err);\n }\n })();\n }\n if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n if (!_this.options.preserveChildrenOrder) {\n node = {};\n if (_this.options.attrkey in obj) {\n node[_this.options.attrkey] = obj[_this.options.attrkey];\n delete obj[_this.options.attrkey];\n }\n if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n node[_this.options.charkey] = obj[_this.options.charkey];\n delete obj[_this.options.charkey];\n }\n if (Object.getOwnPropertyNames(obj).length > 0) {\n node[_this.options.childkey] = obj;\n }\n obj = node;\n } else if (s) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n objClone = {};\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n defineProperty(objClone, key, obj[key]);\n }\n s[_this.options.childkey].push(objClone);\n delete obj[\"#name\"];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n }\n if (stack.length > 0) {\n return _this.assignOrPush(s, nodeName, obj);\n } else {\n if (_this.options.explicitRoot) {\n old = obj;\n obj = {};\n defineProperty(obj, nodeName, old);\n }\n _this.resultObject = obj;\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n ontext = (function(_this) {\n return function(text) {\n var charChild, s;\n s = stack[stack.length - 1];\n if (s) {\n s[charkey] += text;\n if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n charChild = {\n '#name': '__text__'\n };\n charChild[charkey] = text;\n if (_this.options.normalize) {\n charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n s[_this.options.childkey].push(charChild);\n }\n return s;\n }\n };\n })(this);\n this.saxParser.ontext = ontext;\n return this.saxParser.oncdata = (function(_this) {\n return function(text) {\n var s;\n s = ontext(text);\n if (s) {\n return s.cdata = true;\n }\n };\n })(this);\n };\n\n Parser.prototype.parseString = function(str, cb) {\n var err;\n if ((cb != null) && typeof cb === \"function\") {\n this.on(\"end\", function(result) {\n this.reset();\n return cb(null, result);\n });\n this.on(\"error\", function(err) {\n this.reset();\n return cb(err);\n });\n }\n try {\n str = str.toString();\n if (str.trim() === '') {\n this.emit(\"end\", null);\n return true;\n }\n str = bom.stripBOM(str);\n if (this.options.async) {\n this.remaining = str;\n setImmediate(this.processAsync);\n return this.saxParser;\n }\n return this.saxParser.write(str).close();\n } catch (error1) {\n err = error1;\n if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n this.emit('error', err);\n return this.saxParser.errThrown = true;\n } else if (this.saxParser.ended) {\n throw err;\n }\n }\n };\n\n Parser.prototype.parseStringPromise = function(str) {\n return new Promise((function(_this) {\n return function(resolve, reject) {\n return _this.parseString(str, function(err, value) {\n if (err) {\n return reject(err);\n } else {\n return resolve(value);\n }\n });\n };\n })(this));\n };\n\n return Parser;\n\n })(events);\n\n exports.parseString = function(str, a, b) {\n var cb, options, parser;\n if (b != null) {\n if (typeof b === 'function') {\n cb = b;\n }\n if (typeof a === 'object') {\n options = a;\n }\n } else {\n if (typeof a === 'function') {\n cb = a;\n }\n options = {};\n }\n parser = new exports.Parser(options);\n return parser.parseString(str, cb);\n };\n\n exports.parseStringPromise = function(str, a) {\n var options, parser;\n if (typeof a === 'object') {\n options = a;\n }\n parser = new exports.Parser(options);\n return parser.parseStringPromise(str);\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, parser, processors,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n defaults = require('./defaults');\n\n builder = require('./builder');\n\n parser = require('./parser');\n\n processors = require('./processors');\n\n exports.defaults = defaults.defaults;\n\n exports.processors = processors;\n\n exports.ValidationError = (function(superClass) {\n extend(ValidationError, superClass);\n\n function ValidationError(message) {\n this.message = message;\n }\n\n return ValidationError;\n\n })(Error);\n\n exports.Builder = builder.Builder;\n\n exports.Parser = parser.Parser;\n\n exports.parseString = parser.parseString;\n\n exports.parseStringPromise = parser.parseStringPromise;\n\n}).call(this);\n","const EventEmitter = require('events');\nconst {\n isInterfaceNameValid,\n isMemberNameValid\n} = require('../validators');\n\nclass ProxyListener {\n constructor (signal, iface) {\n this.refcount = 0;\n this.fn = (msg) => {\n const { body, signature, sender } = msg;\n if (iface.$object.bus._nameOwners[iface.$object.name] !== sender) {\n return;\n }\n if (signature !== signal.signature) {\n console.error(`warning: got signature ${signature} for signal ${msg.interface}.${signal.name} (expected ${signal.signature})`);\n return;\n }\n iface.emit.apply(iface, [signal.name].concat(body));\n };\n }\n}\n\n/**\n * A class to represent a proxy to an interface exported on the bus to be used\n * by a client. A `ProxyInterface` is gotten by interface name from the {@link\n * ProxyObject} from the {@link MessageBus}. This class is constructed\n * dynamically based on the introspection data on the bus. The advertised\n * methods of the interface are exposed as class methods that take arguments\n * and return a Promsie that resolves to types specified by the type signature\n * of the DBus method. The `ProxyInterface` is an `EventEmitter` that emits\n * events with types that are specified by the type signature of the DBus\n * signal advertised on the bus when that signal is received.\n *\n * If an interface method call returns an error, `ProxyInterface` method call\n * will throw a {@link DBusError}.\n *\n * @example\n * // this demonstrates the use of the standard\n * // `org.freedesktop.DBus.Properties` interface for an interface that exports\n * // some properties.\n * let bus = dbus.sessionBus();\n * let obj = await bus.getProxyObject('org.test.bus_name', '/org/test/path');\n * let properties = obj.getInterface('org.freedesktop.DBus.Properties');\n * // the `Get` method provided by this interface takes two strings and returns\n * // a Variant\n * let someProperty = await properties.Get('org.test.interface_name', 'SomeProperty');\n * // the `PropertiesChanged` signal provided by this interface will emit an\n * // event on the interface with its specified signal arguments.\n * properties.on('PropertiesChanged', (props, invalidated) => {});\n */\nclass ProxyInterface extends EventEmitter {\n /**\n * Create a new `ProxyInterface`. This constructor should not be called\n * directly. Use {@link ProxyObject#getInterface} to get a proxy interface.\n */\n constructor (name, object) {\n super();\n this.$name = name;\n this.$object = object;\n this.$properties = [];\n this.$methods = [];\n this.$signals = [];\n this.$listeners = {};\n\n const getEventDetails = (eventName) => {\n const signal = this.$signals.find((s) => s.name === eventName);\n if (!signal) {\n return [null, null];\n }\n\n const detailedEvent = JSON.stringify({\n path: this.$object.path,\n interface: this.$name,\n member: eventName\n });\n\n return [signal, detailedEvent];\n };\n\n this.on('removeListener', (eventName, listener) => {\n const [signal, detailedEvent] = getEventDetails(eventName);\n\n if (!signal) {\n return;\n }\n\n const proxyListener = this._getEventListener(signal);\n\n if (proxyListener.refcount <= 0) {\n return;\n }\n\n proxyListener.refcount -= 1;\n if (proxyListener.refcount > 0) {\n return;\n }\n\n this.$object.bus._removeMatch(this._signalMatchRuleString(eventName))\n .catch(error => {\n this.$object.bus.emit('error', error);\n });\n this.$object.bus._signals.removeListener(detailedEvent, proxyListener.fn);\n });\n\n this.on('newListener', (eventName, listener) => {\n const [signal, detailedEvent] = getEventDetails(eventName);\n\n if (!signal) {\n return;\n }\n\n const proxyListener = this._getEventListener(signal);\n\n if (proxyListener.refcount > 0) {\n proxyListener.refcount += 1;\n return;\n }\n\n proxyListener.refcount = 1;\n\n this.$object.bus._addMatch(this._signalMatchRuleString(eventName))\n .catch(error => {\n this.$object.bus.emit('error', error);\n });\n this.$object.bus._signals.on(detailedEvent, proxyListener.fn);\n });\n }\n\n _signalMatchRuleString (eventName) {\n return `type='signal',sender=${this.$object.name},interface='${this.$name}',path='${this.$object.path}',member='${eventName}'`;\n }\n\n _getEventListener (signal) {\n if (this.$listeners[signal.name]) {\n return this.$listeners[signal.name];\n }\n\n this.$listeners[signal.name] = new ProxyListener(signal, this);\n return this.$listeners[signal.name];\n }\n\n static _fromXml (object, xml) {\n if (!('$' in xml) || !isInterfaceNameValid(xml.$.name)) {\n return null;\n }\n\n const name = xml.$.name;\n const iface = new ProxyInterface(name, object);\n\n if (Array.isArray(xml.property)) {\n for (const p of xml.property) {\n // TODO validation\n if ('$' in p) {\n iface.$properties.push(p.$);\n }\n }\n }\n\n if (Array.isArray(xml.signal)) {\n for (const s of xml.signal) {\n if (!('$' in s) || !isMemberNameValid(s.$.name)) {\n continue;\n }\n const signal = {\n name: s.$.name,\n signature: ''\n };\n\n if (Array.isArray(s.arg)) {\n for (const a of s.arg) {\n if ('$' in a && 'type' in a.$) {\n // TODO signature validation\n signal.signature += a.$.type;\n }\n }\n }\n\n iface.$signals.push(signal);\n }\n }\n\n if (Array.isArray(xml.method)) {\n for (const m of xml.method) {\n if (!('$' in m) || !isMemberNameValid(m.$.name)) {\n continue;\n }\n const method = {\n name: m.$.name,\n inSignature: '',\n outSignature: ''\n };\n\n if (Array.isArray(m.arg)) {\n for (const a of m.arg) {\n if (!('$' in a) || typeof a.$.type !== 'string') {\n continue;\n }\n const arg = a.$;\n if (arg.direction === 'in') {\n method.inSignature += arg.type;\n } else if (arg.direction === 'out') {\n method.outSignature += arg.type;\n }\n }\n }\n\n // TODO signature validation\n iface.$methods.push(method);\n\n iface[method.name] = function (...args) {\n const objArgs = [\n name,\n method.name,\n method.inSignature,\n method.outSignature\n ].concat(args);\n return object._callMethod.apply(object, objArgs);\n };\n }\n }\n\n return iface;\n }\n}\n\nmodule.exports = ProxyInterface;\n","const xml2js = require('xml2js');\nconst { parseSignature } = require('../signature');\nconst ProxyInterface = require('./proxy-interface');\nconst { Message } = require('../message-type');\nconst {\n assertBusNameValid,\n assertObjectPathValid,\n isObjectPathValid\n} = require('../validators');\n\n/**\n * @class\n * A class that represents a proxy to a DBus object. The `ProxyObject` contains\n * `ProxyInterface`s and a list of `node`s which are object paths of child\n * objects. A `ProxyObject` is created through {@link\n * MessageBus#getProxyObject} for a given well-known name and object path.\n * An interface can be gotten through {@link ProxyObject#getInterface} and can\n * be used to call methods and receive signals for that interface.\n *\n * @example\n * let bus = dbus.sessionBus();\n * let obj = await bus.getProxyObject('org.freedesktop.DBus', '/org/freedesktop/DBus');\n * let peer = obj.getInterface('org.freedesktop.DBus.Peer')\n * await peer.Ping();\n */\nclass ProxyObject {\n /**\n * Create a new `ProxyObject`. This constructor should not be called\n * directly. Use {@link MessageBus#getProxyObject} to get a proxy object.\n */\n constructor (bus, name, path) {\n assertBusNameValid(name);\n assertObjectPathValid(path);\n /**\n * The {@link MessageBus} this name belongs to.\n * @memberof ProxyObject#\n * @member {MessageBus} bus\n */\n this.bus = bus;\n /**\n * The well-known bus name for this proxy object as a string.\n * @memberof ProxyObject#\n * @member {string} name\n */\n this.name = name;\n /**\n * The object path for this `ProxyObject`.\n * @memberof ProxyObject#\n * @member {string} path\n */\n this.path = path;\n /**\n * The object path child nodes for this `ProxyObject` as an array of\n * strings\n * @memberof ProxyObject#\n * @member {string[]} nodes\n */\n this.nodes = [];\n\n /**\n * A map of interface names to [ProxyInterfaces]{@link ProxyInterface} for\n * this `ProxyObject`.\n * @memberof ProxyObject#\n * @member {Object.<string, ProxyInterface>} interfaces\n */\n this.interfaces = {};\n this._parser = new xml2js.Parser();\n }\n\n /**\n * Get a {@link ProxyInterface} for the given interface name.\n *\n * @param name {string} - the interface name to get.\n * @returns {ProxyInterface} - the proxy interface with this name exported by\n * the object or `undefined` if the object does not export an interface with\n * that name.\n * @throws {Error} Throws an error if the interface is not found on this object.\n */\n getInterface (name) {\n if (!Object.keys(this.interfaces).includes(name)) {\n throw new Error(`interface not found in proxy object: ${name}`);\n }\n return this.interfaces[name];\n }\n\n _initXml (xml) {\n const root = xml.node;\n\n if (Array.isArray(root.node)) {\n for (const n of root.node) {\n if (!('$' in n)) {\n continue;\n }\n const name = n.$.name;\n const path = `${this.path}/${name}`;\n if (isObjectPathValid(path)) {\n this.nodes.push(path);\n }\n }\n }\n\n if (Array.isArray(root.interface)) {\n for (const i of root.interface) {\n const iface = ProxyInterface._fromXml(this, i);\n if (iface !== null) {\n this.interfaces[iface.$name] = iface;\n }\n }\n }\n }\n\n _init (xml) {\n return new Promise((resolve, reject) => {\n if (xml) {\n this._parser.parseString(xml, (err, data) => {\n if (err) {\n return reject(err);\n }\n this._initXml(data);\n\n const nameOwnerMessage = new Message({\n destination: 'org.freedesktop.DBus',\n path: '/org/freedesktop/DBus',\n interface: 'org.freedesktop.DBus',\n member: 'GetNameOwner',\n signature: 's',\n body: [this.name]\n });\n\n this.bus.call(nameOwnerMessage)\n .then((msg) => {\n this.bus._nameOwners[this.name] = msg.body[0];\n resolve(this);\n })\n .catch((err) => {\n if (err.type === 'org.freedesktop.DBus.Error.NameHasNoOwner') { return resolve(this); }\n return reject(err);\n });\n });\n } else {\n const introspectMessage = new Message({\n destination: this.name,\n path: this.path,\n interface: 'org.freedesktop.DBus.Introspectable',\n member: 'Introspect',\n signature: '',\n body: []\n });\n\n this.bus.call(introspectMessage)\n .then((msg) => {\n const xml = msg.body[0];\n this._parser.parseString(xml, (err, data) => {\n if (err) {\n return reject(err);\n }\n this._initXml(data);\n resolve(this);\n });\n })\n .catch((err) => {\n return reject(err);\n });\n }\n });\n }\n\n _callMethod (iface, member, inSignature, outSignature, ...args) {\n return new Promise((resolve, reject) => {\n args = args || [];\n\n const methodCallMessage = new Message({\n destination: this.name,\n interface: iface,\n path: this.path,\n member: member,\n signature: inSignature,\n body: args\n });\n\n this.bus.call(methodCallMessage)\n .then((msg) => {\n const outSignatureTree = parseSignature(outSignature);\n if (outSignatureTree.length === 0) {\n resolve(null);\n return;\n }\n if (outSignatureTree.length === 1) {\n resolve(msg.body[0]);\n } else {\n resolve(msg.body);\n }\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n}\n\nmodule.exports = ProxyObject;\n","const EventEmitter = require('events').EventEmitter;\nconst constants = require('./constants');\nconst handleMethod = require('./service/handlers');\nconst { DBusError } = require('./errors');\nconst { Message } = require('./message-type');\nconst ServiceObject = require('./service/object');\nconst xml2js = require('xml2js');\n\nconst {\n METHOD_CALL,\n METHOD_RETURN,\n ERROR,\n SIGNAL\n} = constants.MessageType;\n\nconst {\n NO_REPLY_EXPECTED\n} = constants.MessageFlag;\n\nconst {\n assertBusNameValid,\n assertObjectPathValid\n} = require('./validators');\n\nconst ProxyObject = require('./client/proxy-object');\n\nconst xmlHeader = '<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\\n';\n\n/**\n * @class\n * The `MessageBus` is a class for interacting with a DBus message bus capable\n * of requesting a service [`Name`]{@link module:interface~Name} to export an\n * [`Interface`]{@link module:interface~Interface}, or getting a proxy object\n * to interact with an existing name on the bus as a client. A `MessageBus` is\n * created with `dbus.sessionBus()` or `dbus.systemBus()` methods of the\n * dbus-next module.\n *\n * The `MessageBus` is an `EventEmitter` which emits the following events:\n * * `error` - The underlying connection to the bus has errored. After\n * receiving an `error` event, the `MessageBus` may be disconnected.\n * * `connected` - The bus is connected and ready to send and receive messages.\n * Before this event, messages are buffered.\n * * `message` - The bus has received a message. Called with the {@link\n * Message} that was received. This is part of the low-level api.\n *\n * @example\n * const dbus = require('dbus-next');\n * const bus = dbus.sessionBus();\n * // get a proxy object\n * let obj = await bus.getProxyObject('org.freedesktop.DBus', '/org/freedesktop/DBus');\n * // request a well-known name\n * await bus.requestName('org.test.name');\n */\nclass MessageBus extends EventEmitter {\n /**\n * Create a new `MessageBus`. This constructor is not to be called directly.\n * Use `dbus.sessionBus()` or `dbus.systemBus()` to set up the connection to\n * the bus.\n */\n constructor (conn) {\n super();\n this._builder = new xml2js.Builder({ headless: true });\n this._connection = conn;\n this._serial = 1;\n this._methodReturnHandlers = {};\n this._signals = new EventEmitter();\n this._nameOwners = {};\n this._methodHandlers = [];\n this._serviceObjects = {};\n\n // An object with match rule keys and refcount values. Used only by\n // the internal high-level function `_addMatch` for refcounting.\n this._matchRules = {};\n\n /**\n * The unique name of the bus connection. This will be `null` until the\n * `MessageBus` is connected.\n * @memberof MessageBus#\n * @member {string} name\n */\n this.name = null;\n\n const handleMessage = (msg) => {\n // Don't handle messages that aren't destined for us. This might happen\n // when we become a monitor.\n if (this.name && msg.destination) {\n if (msg.destination[0] === ':' && msg.destination !== this.name) {\n return;\n }\n if (this._nameOwners[msg.destination] &&\n this._nameOwners[msg.destination] !== this.name) {\n return;\n }\n }\n\n if (msg.type === METHOD_RETURN ||\n msg.type === ERROR) {\n const handler = this._methodReturnHandlers[msg.replySerial];\n if (handler) {\n delete this._methodReturnHandlers[msg.replySerial];\n handler(msg);\n }\n } else if (msg.type === SIGNAL) {\n // if this is a name owner changed message, cache the new name owner\n const { sender, path, iface, member } = msg;\n if (sender === 'org.freedesktop.DBus' &&\n path === '/org/freedesktop/DBus' &&\n iface === 'org.freedesktop.DBus' &&\n member === 'NameOwnerChanged') {\n const name = msg.body[0];\n const newOwner = msg.body[2];\n if (!name.startsWith(':')) {\n this._nameOwners[name] = newOwner;\n }\n }\n\n const mangled = JSON.stringify({\n path: msg.path,\n interface: msg.interface,\n member: msg.member\n });\n this._signals.emit(mangled, msg);\n } else {\n // methodCall (needs to be handled)\n let handled = false;\n\n for (const handler of this._methodHandlers) {\n // run installed method handlers first\n handled = handler(msg);\n if (handled) {\n break;\n }\n }\n\n if (!handled) {\n handled = handleMethod(msg, this);\n }\n\n if (!handled) {\n this.send(Message.newError(msg,\n 'org.freedesktop.DBus.Error.UnknownMethod',\n `Method '${msg.member}' on interface '${msg.interface || '(none)'}' does not exist`));\n }\n }\n };\n\n conn.on('message', (msg) => {\n try {\n // TODO: document this signal\n this.emit('message', msg);\n handleMessage(msg);\n } catch (e) {\n this.send(Message.newError(msg, 'com.github.dbus_next.Error', `The DBus library encountered an error.\\n${e.stack}`));\n }\n });\n\n conn.on('error', (err) => {\n // forward network and stream errors\n this.emit('error', err);\n });\n\n const helloMessage = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'Hello'\n });\n\n this.call(helloMessage)\n .then((msg) => {\n this.name = msg.body[0];\n this.emit('connect');\n })\n .catch((err) => {\n this.emit('error', err);\n throw new Error(err);\n });\n }\n\n /**\n * Get a {@link ProxyObject} on the bus for the given name and path for interacting\n * with a service as a client. The proxy object contains a list of the\n * [`ProxyInterface`s]{@link ProxyInterface} exported at the name and object path as well as a list\n * of `node`s.\n *\n * @param name {string} - the well-known name on the bus.\n * @param path {string} - the object path exported on the name.\n * @param [xml] {string} - xml introspection data.\n * @returns {Promise} - a Promise that resolves with the `ProxyObject`.\n */\n getProxyObject (name, path, xml) {\n const obj = new ProxyObject(this, name, path);\n return obj._init(xml);\n }\n\n /**\n * Request a well-known name on the bus.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n *\n * @param name {string} - the well-known name on the bus to request.\n * @param flags {NameFlag} - DBus name flags which affect the behavior of taking the name.\n * @returns {Promise} - a Promise that resolves with the {@link RequestNameReply}.\n */\n requestName (name, flags) {\n flags = flags || 0;\n return new Promise((resolve, reject) => {\n assertBusNameValid(name);\n const requestNameMessage = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'RequestName',\n signature: 'su',\n body: [name, flags]\n });\n this.call(requestNameMessage)\n .then((msg) => {\n return resolve(msg.body[0]);\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n\n /**\n * Release this name. Requests that the name should no longer be owned by the\n * {@link MessageBus}.\n *\n * @returns {Promise} A Promise that will resolve with the {@link ReleaseNameReply}.\n */\n releaseName (name) {\n return new Promise((resolve, reject) => {\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'ReleaseName',\n signature: 's',\n body: [name]\n });\n this.call(msg)\n .then((reply) => {\n return resolve(reply.body[0]);\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n\n /**\n * Disconnect this `MessageBus` from the bus.\n */\n disconnect () {\n this._connection.stream.end();\n this._signals.removeAllListeners();\n }\n\n /**\n * Get a new serial for this bus. These can be used to set the {@link\n * Message#serial} member to send the message on this bus.\n *\n * @returns {int} - A new serial for this bus.\n */\n newSerial () {\n return this._serial++;\n }\n\n /**\n * A function to call when a message of type {@link MessageType.METHOD_RETURN} is received. User handlers are run before\n * default handlers.\n *\n * @callback methodHandler\n * @param {Message} msg - The message to handle.\n * @returns {boolean} Return `true` if the message is handled and no further\n * handlers will run.\n */\n\n /**\n * Add a user method return handler. Remove the handler with {@link\n * MessageBus#removeMethodHandler}\n *\n * @param {methodHandler} - A function to handle a {@link Message} of type\n * {@link MessageType.METHOD_RETURN}. Takes the `Message` as the first\n * argument. Return `true` if the method is handled and no further handlers\n * will run.\n */\n addMethodHandler (fn) {\n this._methodHandlers.push(fn);\n }\n\n /**\n * Remove a user method return handler that was previously added with {@link\n * MessageBus#addMethodHandler}.\n *\n * @param {methodHandler} - A function that was previously added as a method handler.\n */\n removeMethodHandler (fn) {\n for (let i = 0; i < this._methodHandlers.length; ++i) {\n if (this._methodHandlers[i] === fn) {\n this._methodHandlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Send a {@link Message} of type {@link MessageType.METHOD_CALL} to the bus\n * and wait for the reply.\n *\n * @example\n * let message = new Message({\n * destination: 'org.freedesktop.DBus',\n * path: '/org/freedesktop/DBus',\n * interface: 'org.freedesktop.DBus',\n * member: 'ListNames'\n * });\n * let reply = await bus.call(message);\n *\n * @param {Message} msg - The message to send.\n * @returns {Promise} reply - A `Promise` that resolves to the {@link\n * Message} which is a reply to the call.\n */\n call (msg) {\n return new Promise((resolve, reject) => {\n if (!(msg instanceof Message)) {\n throw new Error('The call() method takes a Message class as the first argument.');\n }\n if (msg.type !== METHOD_CALL) {\n throw new Error('Only messages of type METHOD_CALL can expect a call reply.');\n }\n if (msg.serial === null || msg._sent) {\n msg.serial = this.newSerial();\n }\n msg._sent = true;\n if (msg.flags & NO_REPLY_EXPECTED) {\n resolve(null);\n } else {\n this._methodReturnHandlers[msg.serial] = (reply) => {\n this._nameOwners[msg.destination] = reply.sender;\n if (reply.type === ERROR) {\n return reject(new DBusError(reply.errorName, reply.body[0], reply));\n } else {\n return resolve(reply);\n }\n };\n }\n this._connection.message(msg);\n });\n }\n\n /**\n * Send a {@link Message} on the bus that does not expect a reply.\n *\n * @example\n * let message = Message.newSignal('/org/test/path/,\n * 'org.test.interface',\n * 'SomeSignal');\n * bus.send(message);\n *\n * @param {Message} msg - The message to send.\n */\n send (msg) {\n if (!(msg instanceof Message)) {\n throw new Error('The send() method takes a Message class as the first argument.');\n }\n if (msg.serial === null || msg._sent) {\n msg.serial = this.newSerial();\n }\n this._connection.message(msg);\n }\n\n /**\n * Export an [`Interface`]{@link module:interface~Interface} on the bus. See\n * the documentation for that class for how to define service interfaces.\n *\n * @param path {string} - The object path to export this `Interface` on.\n * @param iface {module:interface~Interface} - The service interface to export.\n */\n export (path, iface) {\n const obj = this._getServiceObject(path);\n obj.addInterface(iface);\n }\n\n /**\n * Unexport an `Interface` on the bus. The interface will no longer be\n * advertised to clients.\n *\n * @param {string} path - The object path on which to unexport.\n * @param {module:interface~Interface} [iface] - The `Interface` to unexport.\n * If not given, this will remove all interfaces on the path.\n */\n unexport (path, iface) {\n iface = iface || null;\n if (iface === null) {\n this._removeServiceObject(path);\n } else {\n const obj = this._getServiceObject(path);\n obj.removeInterface(iface);\n if (!obj.interfaces.length) {\n this._removeServiceObject(path);\n }\n }\n }\n\n _introspect (path) {\n assertObjectPathValid(path);\n const xml = {\n node: {\n node: []\n }\n };\n\n if (this._serviceObjects[path]) {\n xml.node.interface = this._serviceObjects[path].introspect();\n }\n\n const pathSplit = path.split('/').filter(n => n);\n\n const children = new Set();\n\n for (const key of Object.keys(this._serviceObjects)) {\n const keySplit = key.split('/').filter(n => n);\n if (keySplit.length <= pathSplit.length) {\n continue;\n }\n if (pathSplit.every((v, i) => v === keySplit[i])) {\n children.add(keySplit[pathSplit.length]);\n }\n }\n\n for (const child of children) {\n xml.node.node.push({\n $: {\n name: child\n }\n });\n }\n\n return xmlHeader + this._builder.buildObject(xml);\n }\n\n _getServiceObject (path) {\n assertObjectPathValid(path);\n if (!this._serviceObjects[path]) {\n this._serviceObjects[path] = new ServiceObject(path, this);\n }\n return this._serviceObjects[path];\n }\n\n _removeServiceObject (path) {\n assertObjectPathValid(path);\n if (this._serviceObjects[path]) {\n const obj = this._serviceObjects[path];\n for (const i of Object.keys(obj.interfaces)) {\n obj.removeInterface(obj.interfaces[i]);\n }\n delete this._serviceObjects[path];\n }\n }\n\n _addMatch (match) {\n if (Object.prototype.hasOwnProperty.call(match, this._matchRules)) {\n this._matchRules[match] += 1;\n return Promise.resolve();\n }\n\n this._matchRules[match] = 1;\n\n // TODO catch error and update refcount\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'AddMatch',\n signature: 's',\n body: [match]\n });\n return this.call(msg);\n }\n\n _removeMatch (match) {\n if (!this._connection.stream.writable) {\n return Promise.resolve();\n }\n\n if (Object.prototype.hasOwnProperty.call(match, this._matchRules)) {\n this._matchRules[match] -= 1;\n if (this._matchRules[match] > 0) {\n return Promise.resolve();\n }\n } else {\n return Promise.resolve();\n }\n\n delete this._matchRules[match];\n\n // TODO catch error and update refcount\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'RemoveMatch',\n signature: 's',\n body: [match]\n });\n return this.call(msg);\n }\n}\n\nmodule.exports = MessageBus;\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = Put;\nfunction Put () {\n if (!(this instanceof Put)) return new Put;\n \n var words = [];\n var len = 0;\n \n this.put = function (buf) {\n words.push({ buffer : buf });\n len += buf.length;\n return this;\n };\n \n this.word8 = function (x) {\n words.push({ bytes : 1, value : x });\n len += 1;\n return this;\n };\n \n this.floatle = function (x) {\n words.push({ bytes : 'float', endian : 'little', value : x });\n len += 4;\n return this;\n };\n \n [ 8, 16, 24, 32, 64 ].forEach((function (bits) {\n this['word' + bits + 'be'] = function (x) {\n words.push({ endian : 'big', bytes : bits / 8, value : x });\n len += bits / 8;\n return this;\n };\n \n this['word' + bits + 'le'] = function (x) {\n words.push({ endian : 'little', bytes : bits / 8, value : x });\n len += bits / 8;\n return this;\n };\n }).bind(this));\n \n this.pad = function (bytes) {\n words.push({ endian : 'big', bytes : bytes, value : 0 });\n len += bytes;\n return this;\n };\n \n this.length = function () {\n return len;\n };\n \n this.buffer = function () {\n var buf = Buffer.alloc(len);\n var offset = 0;\n words.forEach(function (word) {\n if (word.buffer) {\n word.buffer.copy(buf, offset, 0);\n offset += word.buffer.length;\n }\n else if (word.bytes == 'float') {\n // s * f * 2^e\n var v = Math.abs(word.value);\n var s = (word.value >= 0) * 1;\n var e = Math.ceil(Math.log(v) / Math.LN2);\n var f = v / (1 << e);\n console.dir([s,e,f]);\n \n console.log(word.value);\n \n // s:1, e:7, f:23\n // [seeeeeee][efffffff][ffffffff][ffffffff]\n buf[offset++] = (s << 7) & ~~(e / 2);\n buf[offset++] = ((e & 1) << 7) & ~~(f / (1 << 16));\n buf[offset++] = 0;\n buf[offset++] = 0;\n offset += 4;\n }\n else {\n var big = word.endian === 'big';\n var ix = big ? [ (word.bytes - 1) * 8, -8 ] : [ 0, 8 ];\n \n for (\n var i = ix[0];\n big ? i >= 0 : i < word.bytes * 8;\n i += ix[1]\n ) {\n if (i >= 32) {\n buf[offset++] = Math.floor(word.value / Math.pow(2, i)) & 0xff;\n }\n else {\n buf[offset++] = (word.value >> i) & 0xff;\n }\n }\n }\n });\n return buf;\n };\n \n this.write = function (stream) {\n stream.write(this.buffer());\n };\n}\n","const Buffer = require('safe-buffer').Buffer;\n\nfunction align (ps, n) {\n const pad = n - ps._offset % n;\n if (pad === 0 || pad === n) return;\n // TODO: write8(0) in a loop (3 to 7 times here) could be more efficient\n const padBuff = Buffer.alloc(pad);\n ps.put(Buffer.from(padBuff));\n ps._offset += pad;\n}\n\nexports.align = align;\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","const libraryOptions = {\n bigIntCompat: false\n};\n\nmodule.exports.getBigIntCompat = function () {\n return libraryOptions.bigIntCompat;\n};\n\nmodule.exports.setBigIntCompat = function (val) {\n if (typeof val !== 'boolean') {\n throw new Error('dbus.setBigIntCompat() must be called with a boolean parameter');\n }\n libraryOptions.bigIntCompat = val;\n};\n","const Buffer = require('safe-buffer').Buffer;\nconst align = require('./align').align;\nconst { parseSignature } = require('../lib/signature');\nconst Long = require('long');\nconst { getBigIntCompat } = require('./library-options');\nconst JSBI = require('jsbi');\n\nconst {\n _getJSBIConstants, _getBigIntConstants\n} = require('./constants');\n\n/*\n * MakeSimpleMarshaller\n * @param signature - the signature of the data you want to check\n * @returns a simple marshaller with the \"check\" method\n *\n * check returns nothing - it only raises errors if the data is\n * invalid for the signature\n */\nconst MakeSimpleMarshaller = function (signature) {\n const marshaller = {};\n function checkValidString (data) {\n if (typeof data !== 'string') {\n throw new Error(`Data: ${data} was not of type string`);\n } else if (data.indexOf('\\0') !== -1) {\n throw new Error('String contains null byte');\n }\n }\n\n function checkValidSignature (data) {\n if (data.length > 0xff) {\n throw new Error(\n `Data: ${data} is too long for signature type (${data.length} > 255)`\n );\n }\n\n let parenCount = 0;\n for (let ii = 0; ii < data.length; ++ii) {\n if (parenCount > 32) {\n throw new Error(\n `Maximum container type nesting exceeded in signature type:${data}`\n );\n }\n switch (data[ii]) {\n case '(':\n ++parenCount;\n break;\n case ')':\n --parenCount;\n break;\n default:\n /* no-op */\n break;\n }\n }\n parseSignature(data);\n }\n\n switch (signature) {\n case 'o':\n // object path\n // TODO: verify object path here?\n case 's': // eslint-disable-line no-fallthrough\n // STRING\n marshaller.check = function (data) {\n checkValidString(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // utf8 string\n align(ps, 4);\n const buff = Buffer.from(data, 'utf8');\n ps\n .word32le(buff.length)\n .put(buff)\n .word8(0);\n ps._offset += 5 + buff.length;\n };\n break;\n case 'g':\n // SIGNATURE\n marshaller.check = function (data) {\n checkValidString(data);\n checkValidSignature(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // signature\n const buff = Buffer.from(data, 'ascii');\n ps\n .word8(data.length)\n .put(buff)\n .word8(0);\n ps._offset += 2 + buff.length;\n };\n break;\n case 'y':\n // BYTE\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0x00, 0xff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n ps.word8(data);\n ps._offset++;\n };\n break;\n case 'b':\n // BOOLEAN\n marshaller.check = function (data) {\n checkBoolean(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // booleans serialised as 0/1 unsigned 32 bit int\n data = data ? 1 : 0;\n align(ps, 4);\n ps.word32le(data);\n ps._offset += 4;\n };\n break;\n case 'n':\n // INT16\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(-0x7fff - 1, 0x7fff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 2);\n const buff = Buffer.alloc(2);\n buff.writeInt16LE(parseInt(data), 0);\n ps.put(buff);\n ps._offset += 2;\n };\n break;\n case 'q':\n // UINT16\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0, 0xffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 2);\n ps.word16le(data);\n ps._offset += 2;\n };\n break;\n case 'h':\n case 'i':\n // INT32\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(-0x7fffffff - 1, 0x7fffffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 4);\n const buff = Buffer.alloc(4);\n buff.writeInt32LE(parseInt(data), 0);\n ps.put(buff);\n ps._offset += 4;\n };\n break;\n case 'u':\n // UINT32\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0, 0xffffffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // 32 t unsigned int\n align(ps, 4);\n ps.word32le(data);\n ps._offset += 4;\n };\n break;\n case 't':\n // UINT64\n marshaller.check = function (data) {\n return checkLong(data, false);\n };\n marshaller.marshall = function (ps, data) {\n data = this.check(data);\n align(ps, 8);\n ps.word32le(data.low);\n ps.word32le(data.high);\n ps._offset += 8;\n };\n break;\n case 'x':\n // INT64\n marshaller.check = function (data) {\n return checkLong(data, true);\n };\n marshaller.marshall = function (ps, data) {\n data = this.check(data);\n align(ps, 8);\n ps.word32le(data.low);\n ps.word32le(data.high);\n ps._offset += 8;\n };\n break;\n case 'd':\n // DOUBLE\n marshaller.check = function (data) {\n if (typeof data !== 'number') {\n throw new Error(`Data: ${data} was not of type number`);\n } else if (Number.isNaN(data)) {\n throw new Error(`Data: ${data} was not a number`);\n } else if (!Number.isFinite(data)) {\n throw new Error('Number outside range');\n }\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 8);\n const buff = Buffer.alloc(8);\n buff.writeDoubleLE(parseFloat(data), 0);\n ps.put(buff);\n ps._offset += 8;\n };\n break;\n default:\n throw new Error(`Unknown data type format: ${signature}`);\n }\n return marshaller;\n};\nexports.MakeSimpleMarshaller = MakeSimpleMarshaller;\n\nconst checkRange = function (minValue, maxValue, data) {\n if (data > maxValue || data < minValue) {\n throw new Error('Number outside range');\n }\n};\n\nconst checkInteger = function (data) {\n if (typeof data !== 'number') {\n throw new Error(`Data: ${data} was not of type number`);\n }\n if (Math.floor(data) !== data) {\n throw new Error(`Data: ${data} was not an integer`);\n }\n};\n\nconst checkBoolean = function (data) {\n if (!(typeof data === 'boolean' || data === 0 || data === 1)) { throw new Error(`Data: ${data} was not of type boolean`); }\n};\n\nconst checkJSBILong = function (data, signed) {\n const { MAX_INT64, MIN_INT64, MAX_UINT64, MIN_UINT64 } = _getJSBIConstants();\n\n data = JSBI.BigInt(data.toString());\n\n if (signed) {\n if (JSBI.greaterThan(data, MAX_INT64)) {\n throw new Error('data was out of range (greater than max int64)');\n } else if (JSBI.lessThan(data, MIN_INT64)) {\n throw new Error('data was out of range (less than min int64)');\n }\n } else {\n if (JSBI.greaterThan(data, MAX_UINT64)) {\n throw new Error('data was out of range (greater than max uint64)');\n } else if (JSBI.lessThan(data, MIN_UINT64)) {\n throw new Error('data was out of range (less than min uint64)');\n }\n }\n\n return Long.fromString(data.toString(), true);\n};\n\nconst checkBigIntLong = function (data, signed) {\n const { MAX_INT64, MIN_INT64, MAX_UINT64, MIN_UINT64 } = _getBigIntConstants();\n\n if (typeof data !== 'bigint') {\n data = BigInt(data.toString());\n }\n\n if (signed) {\n if (data > MAX_INT64) {\n throw new Error('data was out of range (greater than max int64)');\n } else if (data < MIN_INT64) {\n throw new Error('data was out of range (less than min int64)');\n }\n } else {\n if (data > MAX_UINT64) {\n throw new Error('data was out of range (greater than max uint64)');\n } else if (data < MIN_UINT64) {\n throw new Error('data was out of range (less than min uint64)');\n }\n }\n\n return Long.fromString(data.toString(), true);\n};\n\nconst checkLong = function (data, signed) {\n const compat = getBigIntCompat();\n\n if (compat) {\n return checkJSBILong(data, signed);\n } else {\n return checkBigIntLong(data, signed);\n }\n};\n","const assert = require('assert');\n\nconst { parseSignature } = require('./signature');\nconst put = require('@nornagon/put');\nconst Marshallers = require('./marshallers');\nconst align = require('./align').align;\n\nmodule.exports = function marshall (signature, data, offset, fds) {\n if (typeof offset === 'undefined') offset = 0;\n const tree = parseSignature(signature);\n if (!Array.isArray(data) || data.length !== tree.length) {\n throw new Error(\n `message body does not match message signature. Body:${JSON.stringify(\n data\n )}, signature:${signature}`\n );\n }\n const putstream = put();\n putstream._offset = offset;\n const buf = writeStruct(putstream, tree, data, fds).buffer();\n return buf;\n};\n\n// TODO: serialise JS objects as a{sv}\n// function writeHash(ps, treeKey, treeVal, data) {\n//\n// }\n\nfunction writeStruct (ps, tree, data, fds) {\n if (tree.length !== data.length) {\n throw new Error('Invalid struct data');\n }\n for (let i = 0; i < tree.length; ++i) {\n write(ps, tree[i], data[i], fds);\n }\n return ps;\n}\n\nfunction write (ps, ele, data, fds) {\n switch (ele.type) {\n case '(':\n case '{':\n align(ps, 8);\n writeStruct(ps, ele.child, data, fds);\n break;\n case 'a': {\n // array serialisation:\n // length of array body aligned at 4 byte boundary\n // (optional 4 bytes to align first body element on 8-byte boundary if element\n // body\n const arrPut = put();\n arrPut._offset = ps._offset;\n const _offset = arrPut._offset;\n writeSimple(arrPut, 'u', 0); // array length placeholder\n const lengthOffset = arrPut._offset - 4 - _offset;\n // we need to align here because alignment is not included in array length\n if (['x', 't', 'd', '{', '('].indexOf(ele.child[0].type) !== -1) { align(arrPut, 8); }\n const startOffset = arrPut._offset;\n for (let i = 0; i < data.length; ++i) { write(arrPut, ele.child[0], data[i], fds); }\n const arrBuff = arrPut.buffer();\n const length = arrPut._offset - startOffset;\n // lengthOffset in the range 0 to 3 depending on number of align bytes padded _before_ arrayLength\n arrBuff.writeUInt32LE(length, lengthOffset);\n ps.put(arrBuff);\n ps._offset += arrBuff.length;\n break;\n } case 'v': {\n // TODO: allow serialisation of simple types as variants, e. g 123 -> ['u', 123], true -> ['b', 1], 'abc' -> ['s', 'abc']\n assert.strictEqual(data.length, 2, 'variant data should be [signature, data]');\n const signatureEle = {\n type: 'g',\n child: []\n };\n write(ps, signatureEle, data[0], fds);\n const tree = parseSignature(data[0]);\n assert(tree.length === 1);\n write(ps, tree[0], data[1], fds);\n break;\n } case 'h': {\n if (fds) {\n const idx = fds.push(data);\n return writeSimple(ps, ele.type, idx - 1);\n }\n }\n default:\n return writeSimple(ps, ele.type, data);\n }\n}\n\nconst stringTypes = ['g', 'o', 's'];\n\nfunction writeSimple (ps, type, data) {\n if (typeof data === 'undefined') {\n throw new Error(\n \"Serialisation of JS 'undefined' type is not supported by d-bus\"\n );\n }\n if (data === null) { throw new Error('Serialisation of null value is not supported by d-bus'); }\n\n if (Buffer.isBuffer(data)) data = data.toString(); // encoding?\n if (stringTypes.indexOf(type) !== -1 && typeof data !== 'string') {\n throw new Error(\n `Expected string or buffer argument, got ${JSON.stringify(\n data\n )} of type '${type}'`\n );\n }\n\n const simpleMarshaller = Marshallers.MakeSimpleMarshaller(type);\n simpleMarshaller.marshall(ps, data);\n return ps;\n}\n","/* global BigInt */\n\nconst { parseSignature } = require('./signature');\nconst { getBigIntCompat } = require('./library-options');\nconst JSBI = require('jsbi');\nconst Long = require('long');\nconst LE = require('./constants').endianness.le;\n\n// Buffer + position + global start position ( used in alignment )\nfunction DBusBuffer (buffer, startPos, endian, fds, options) {\n if (typeof options !== 'object') {\n options = { ayBuffer: true };\n } else if (options.ayBuffer === undefined) {\n // default settings object\n options.ayBuffer = true; // enforce truthy default props\n }\n this.options = options;\n this.buffer = buffer;\n this.endian = endian;\n this.fds = fds;\n this.startPos = startPos || 0;\n this.pos = 0;\n}\n\nDBusBuffer.prototype.align = function (power) {\n const allbits = (1 << power) - 1;\n const paddedOffset = ((this.pos + this.startPos + allbits) >> power) << power;\n this.pos = paddedOffset - this.startPos;\n};\n\nDBusBuffer.prototype.readInt8 = function () {\n this.pos++;\n return this.buffer[this.pos - 1];\n};\n\nDBusBuffer.prototype.readSInt16 = function () {\n this.align(1);\n\n const res = (this.endian === LE\n ? this.buffer.readInt16LE(this.pos)\n : this.buffer.readInt16BE(this.pos));\n\n this.pos += 2;\n return res;\n};\n\nDBusBuffer.prototype.readInt16 = function () {\n this.align(1);\n\n const res = (this.endian === LE\n ? this.buffer.readUInt16LE(this.pos)\n : this.buffer.readUInt16BE(this.pos));\n\n this.pos += 2;\n return res;\n};\n\nDBusBuffer.prototype.readSInt32 = function () {\n this.align(2);\n\n const res = (this.endian === LE\n ? this.buffer.readInt32LE(this.pos)\n : this.buffer.readInt32BE(this.pos));\n\n this.pos += 4;\n return res;\n};\n\nDBusBuffer.prototype.readInt32 = function () {\n this.align(2);\n\n const res = (this.endian === LE\n ? this.buffer.readUInt32LE(this.pos)\n : this.buffer.readUInt32BE(this.pos));\n\n this.pos += 4;\n return res;\n};\n\nDBusBuffer.prototype.readDouble = function () {\n this.align(3);\n\n const res = (this.endian === LE\n ? this.buffer.readDoubleLE(this.pos)\n : this.buffer.readDoubleBE(this.pos));\n\n this.pos += 8;\n return res;\n};\n\nDBusBuffer.prototype.readString = function (len) {\n if (len === 0) {\n this.pos++;\n return '';\n }\n const res = this.buffer.toString('utf8', this.pos, this.pos + len);\n this.pos += len + 1; // dbus strings are always zero-terminated ('s' and 'g' types)\n return res;\n};\n\nDBusBuffer.prototype.readTree = function readTree (tree) {\n switch (tree.type) {\n case '(':\n case '{':\n case 'r':\n this.align(3);\n return this.readStruct(tree.child);\n case 'a':\n if (!tree.child || tree.child.length !== 1) {\n throw new Error('Incorrect array element signature');\n }\n return this.readArray(tree.child[0], this.readInt32());\n case 'v':\n return this.readVariant();\n default:\n return this.readSimpleType(tree.type);\n }\n};\n\nDBusBuffer.prototype.read = function read (signature) {\n const tree = parseSignature(signature);\n return this.readStruct(tree);\n};\n\nDBusBuffer.prototype.readVariant = function readVariant () {\n const signature = this.readSimpleType('g');\n const tree = parseSignature(signature);\n return [tree, this.readStruct(tree)];\n};\n\nDBusBuffer.prototype.readStruct = function readStruct (struct) {\n const result = [];\n for (let i = 0; i < struct.length; ++i) {\n result.push(this.readTree(struct[i]));\n }\n return result;\n};\n\nDBusBuffer.prototype.readArray = function readArray (eleType, arrayBlobSize) {\n const result = [];\n const start = this.pos;\n\n // special case: treat ay as Buffer\n if (eleType.type === 'y' && this.options.ayBuffer) {\n this.pos += arrayBlobSize;\n return this.buffer.slice(start, this.pos);\n }\n\n // end of array is start of first element + array size\n // we need to add 4 bytes if not on 8-byte boundary\n // and array element needs 8 byte alignment\n if (['x', 't', 'd', '{', '(', 'r'].indexOf(eleType.type) !== -1) {\n this.align(3);\n }\n const end = this.pos + arrayBlobSize;\n while (this.pos < end) {\n result.push(this.readTree(eleType));\n }\n return result;\n};\n\nDBusBuffer.prototype.readSimpleType = function readSimpleType (t) {\n let len, word0, word1;\n switch (t) {\n case 'y':\n return this.readInt8();\n case 'b':\n // TODO: spec says that true is strictly 1 and false is strictly 0\n // shold we error (or warn?) when non 01 values?\n return !!this.readInt32();\n case 'n':\n return this.readSInt16();\n case 'q':\n return this.readInt16();\n case 'h': {\n const idx = this.readInt32();\n if (!this.fds || this.fds.length <= idx) throw new Error('No FDs available');\n return this.fds[idx];\n } case 'u':\n return this.readInt32();\n case 'i':\n return this.readSInt32();\n case 'g':\n len = this.readInt8();\n return this.readString(len);\n case 's':\n case 'o':\n len = this.readInt32();\n return this.readString(len);\n // TODO: validate object path here\n // if (t === 'o' && !isValidObjectPath(str))\n // throw new Error('string is not a valid object path'));\n case 'x': {\n // signed\n this.align(3);\n word0 = this.readInt32();\n word1 = this.readInt32();\n const signedLong = new Long(word0, word1, false);\n\n if (getBigIntCompat()) {\n return JSBI.BigInt(signedLong.toString());\n } else if (typeof BigInt !== 'function') {\n throw new Error('BigInt is not supported in this Node version. Use dbus.setBigIntCompat(true) to use a polyfill');\n } else {\n return BigInt(signedLong.toString());\n }\n }\n case 't': {\n // unsigned\n this.align(3);\n word0 = this.readInt32();\n word1 = this.readInt32();\n const unsignedLong = new Long(word0, word1, true);\n\n if (getBigIntCompat()) {\n return JSBI.BigInt(unsignedLong.toString());\n } else if (typeof BigInt !== 'function') {\n throw new Error('BigInt is not supported in this Node version. Use dbus.setBigIntCompat(true) to use a polyfill');\n } else {\n return BigInt(unsignedLong.toString());\n }\n }\n case 'd':\n return this.readDouble();\n default:\n throw new Error(`Unsupported type: ${t}`);\n }\n};\n\nmodule.exports = DBusBuffer;\n","[\n {\n \"type\": \"a\",\n \"child\": [\n {\n \"type\": \"(\",\n \"child\": [\n {\n \"type\": \"y\",\n \"child\": []\n },\n {\n \"type\": \"v\",\n \"child\": []\n }\n ]\n }\n ]\n }\n]\n","const Buffer = require('safe-buffer').Buffer;\nconst marshall = require('./marshall');\nconst constants = require('./constants');\nconst DBusBuffer = require('./dbus-buffer');\n\nconst headerSignature = require('./header-signature.json');\n\nmodule.exports.unmarshalMessages = function messageParser (\n stream,\n onMessage,\n opts\n) {\n let state = 0; // 0: header, 1: fields + body\n let header, fieldsAndBody;\n let fieldsLength, fieldsLengthPadded;\n let fieldsAndBodyLength = 0;\n let bodyLength = 0;\n let endian = 0;\n const LE = constants.endianness.le;\n stream.on('readable', function () {\n while (1) {\n if (state === 0) {\n header = stream.read(16);\n if (!header) {\n break;\n }\n state = 1;\n\n endian = header.readUInt8(0);\n\n fieldsLength = (endian === LE ? header.readUInt32LE(12) : header.readUInt32BE(12));\n fieldsLengthPadded = ((fieldsLength + 7) >> 3) << 3;\n bodyLength = (endian === LE ? header.readUInt32LE(4) : header.readUInt32BE(4));\n fieldsAndBodyLength = fieldsLengthPadded + bodyLength;\n } else {\n const readBuf = stream.read(fieldsAndBodyLength, null);\n // usockets return object with { data, fds }\n fieldsAndBody = readBuf ? readBuf.data || readBuf : readBuf;\n if (!fieldsAndBody) {\n break;\n }\n state = 0;\n\n const messageBuffer = new DBusBuffer(fieldsAndBody, 0, endian, readBuf.fds, opts);\n const unmarshalledHeader = messageBuffer.readArray(\n headerSignature[0].child[0],\n fieldsLength\n );\n messageBuffer.align(3);\n let headerName;\n const message = {};\n message.serial = (endian === LE ? header.readUInt32LE(8) : header.readUInt32BE(8));\n\n for (let i = 0; i < unmarshalledHeader.length; ++i) {\n headerName = constants.headerTypeName[unmarshalledHeader[i][0]];\n message[headerName] = unmarshalledHeader[i][1][1][0];\n }\n\n message.type = header[1];\n message.flags = header[2];\n\n if (bodyLength > 0 && message.signature) {\n message.body = messageBuffer.read(message.signature);\n }\n onMessage(message);\n }\n }\n });\n};\n\n// given buffer which contains entire message deserialise it\n// TODO: factor out common code\nmodule.exports.unmarshall = function unmarshall (buff, opts) {\n const endian = buff.readUInt8();\n const msgBuf = new DBusBuffer(buff, 0, endian, null, opts);\n const headers = msgBuf.read('yyyyuua(yv)');\n const message = {};\n for (let i = 0; i < headers[6].length; ++i) {\n const headerName = constants.headerTypeName[headers[6][i][0]];\n message[headerName] = headers[6][i][1][1][0];\n }\n message.type = headers[1];\n message.flags = headers[2];\n message.serial = headers[5];\n msgBuf.align(3);\n message.body = msgBuf.read(message.signature);\n return message;\n};\n\nmodule.exports.marshall = function marshallMessage (message) {\n if (!message.serial) throw new Error('Missing or invalid serial');\n const flags = message.flags || 0;\n const type = message.type || constants.messageType.METHOD_CALL;\n let bodyLength = 0;\n let bodyBuff;\n const fds = [];\n if (message.signature && message.body) {\n bodyBuff = marshall(message.signature, message.body, 0, fds);\n bodyLength = bodyBuff.length;\n message.unixFd = fds.length;\n }\n const header = [\n constants.endianness.le,\n type,\n flags,\n constants.protocolVersion,\n bodyLength,\n message.serial\n ];\n const headerBuff = marshall('yyyyuu', header);\n const fields = [];\n constants.headerTypeName.forEach(function (fieldName) {\n const fieldVal = message[fieldName];\n if (fieldVal) {\n fields.push([\n constants.headerTypeId[fieldName],\n [constants.fieldSignature[fieldName], fieldVal]\n ]);\n }\n });\n const fieldsBuff = marshall('a(yv)', [fields], 12);\n const headerLenAligned =\n ((headerBuff.length + fieldsBuff.length + 7) >> 3) << 3;\n const messageLen = headerLenAligned + bodyLength;\n const messageBuff = Buffer.alloc(messageLen);\n headerBuff.copy(messageBuff);\n fieldsBuff.copy(messageBuff, headerBuff.length);\n if (bodyLength > 0) bodyBuff.copy(messageBuff, headerLenAligned);\n\n return [messageBuff, fds];\n};\n","const Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function readOneLine (stream, cb) {\n const bytes = [];\n function readable () {\n while (1) {\n const buf = stream.read(1);\n if (!buf) return;\n const b = buf[0];\n if (b === 0x0a) {\n try {\n cb(Buffer.from(bytes));\n } catch (error) {\n stream.emit('error', error);\n }\n stream.removeListener('readable', readable);\n return;\n }\n bytes.push(b);\n }\n }\n stream.on('readable', readable);\n};\n","const Buffer = require('safe-buffer').Buffer;\nconst crypto = require('crypto');\nconst fs = require('fs');\nconst path = require('path');\n\nconst constants = require('./constants');\nconst readLine = require('./readline');\n\nfunction sha1 (input) {\n const shasum = crypto.createHash('sha1');\n shasum.update(input);\n return shasum.digest('hex');\n}\n\nfunction getUserHome () {\n return process.env[process.platform.match(/$win/) ? 'USERPROFILE' : 'HOME'];\n}\n\nfunction getCookie (context, id, cb) {\n // http://dbus.freedesktop.org/doc/dbus-specification.html#auth-mechanisms-sha\n const dirname = path.join(getUserHome(), '.dbus-keyrings');\n // > There is a default context, \"org_freedesktop_general\" that's used by servers that do not specify otherwise.\n if (context.length === 0) context = 'org_freedesktop_general';\n\n const filename = path.join(dirname, context);\n // check it's not writable by others and readable by user\n fs.stat(dirname, function (err, stat) {\n if (err) return cb(err);\n if (stat.mode & 0o22) {\n return cb(\n new Error(\n 'User keyrings directory is writeable by other users. Aborting authentication'\n )\n );\n }\n if ('getuid' in process && stat.uid !== process.getuid()) {\n return cb(\n new Error(\n 'Keyrings directory is not owned by the current user. Aborting authentication!'\n )\n );\n }\n fs.readFile(filename, 'ascii', function (err, keyrings) {\n if (err) return cb(err);\n const lines = keyrings.split('\\n');\n for (let l = 0; l < lines.length; ++l) {\n const data = lines[l].split(' ');\n if (id === data[0]) return cb(null, data[2]);\n }\n return cb(new Error('cookie not found'));\n });\n });\n}\n\nfunction hexlify (input) {\n return Buffer.from(input.toString(), 'ascii').toString('hex');\n}\n\nmodule.exports = function auth (stream, opts, cb) {\n // filter used to make a copy so we don't accidently change opts data\n let authMethods;\n if (opts.authMethods) {\n authMethods = opts.authMethods;\n } else {\n authMethods = constants.defaultAuthMethods;\n }\n stream.write('\\0');\n tryAuth(stream, authMethods.slice(), cb);\n};\n\nfunction tryAuth (stream, methods, cb) {\n if (methods.length === 0) {\n return cb(new Error('No authentication methods left to try'));\n }\n\n const authMethod = methods.shift();\n const uid = 'getuid' in process ? process.getuid() : 0;\n const id = hexlify(uid);\n\n let guid = '';\n function beginOrNextAuth () {\n readLine(stream, function (line) {\n const ok = line.toString('ascii').match(/^([A-Za-z]+) (.*)/);\n if (ok && ok[1] === 'OK') {\n guid = ok[2]; // ok[2] = guid. Do we need it?\n if (stream.supportsUnixFd) {\n negotiateUnixFd();\n } else {\n stream.write('BEGIN\\r\\n');\n return cb(null, guid);\n }\n } else {\n // TODO: parse error!\n if (!methods.empty) {\n tryAuth(stream, methods, cb);\n } else {\n return cb(line);\n }\n }\n });\n }\n function negotiateUnixFd () {\n stream.write('NEGOTIATE_UNIX_FD\\r\\n');\n readLine(stream, function (line) {\n const res = line.toString('ascii').trim();\n if (res === 'AGREE_UNIX_FD') {\n // ok\n } else if (res === 'ERROR') {\n stream.supportsUnixFd = false;\n } else {\n return cb(line);\n }\n stream.write('BEGIN\\r\\n');\n return cb(null, guid);\n });\n }\n\n switch (authMethod) {\n case 'EXTERNAL':\n stream.write(`AUTH ${authMethod} ${id}\\r\\n`);\n beginOrNextAuth();\n break;\n case 'DBUS_COOKIE_SHA1':\n stream.write(`AUTH ${authMethod} ${id}\\r\\n`);\n readLine(stream, function (line) {\n const data = Buffer.from(\n line\n .toString()\n .split(' ')[1]\n .trim(),\n 'hex'\n )\n .toString()\n .split(' ');\n const cookieContext = data[0];\n const cookieId = data[1];\n const serverChallenge = data[2];\n // any random 16 bytes should work, sha1(rnd) to make it simplier\n const clientChallenge = crypto.randomBytes(16).toString('hex');\n getCookie(cookieContext, cookieId, function (err, cookie) {\n if (err) return cb(err);\n const response = sha1(\n [serverChallenge, clientChallenge, cookie].join(':')\n );\n const reply = hexlify(clientChallenge + response);\n stream.write(`DATA ${reply}\\r\\n`);\n beginOrNextAuth();\n });\n });\n break;\n case 'ANONYMOUS':\n stream.write('AUTH ANONYMOUS \\r\\n');\n beginOrNextAuth();\n break;\n default:\n console.error(`Unsupported auth method: ${authMethod}`);\n beginOrNextAuth();\n break;\n }\n}\n","const fs = require('fs');\nconst os = require('os');\n\nfunction getDbusAddressFromWindowSelection (callback) {\n // read dbus adress from window selection\n // TODO: implement this somewhere\n const x11 = require('x11');\n if (x11 === null) {\n throw new Error('cannot get session bus address from window selection: dbus-next was installed without x11 support');\n }\n\n // read machine uuid\n fs.readFile('/var/lib/dbus/machine-id', 'ascii', function (err, uuid) {\n if (err) return callback(err);\n const hostname = os.hostname().split('-')[0];\n x11.createClient(function (err, display) {\n if (err) return callback(err);\n const X = display.client;\n const selectionName = `_DBUS_SESSION_BUS_SELECTION_${\n hostname\n }_${uuid.trim()}`;\n X.InternAtom(false, selectionName, function (err, id) {\n if (err) return callback(err);\n X.GetSelectionOwner(id, function (err, win) {\n if (err) return callback(err);\n X.InternAtom(false, '_DBUS_SESSION_BUS_ADDRESS', function (\n err,\n propId\n ) {\n if (err) return callback(err);\n win = display.screen[0].root;\n X.GetProperty(0, win, propId, 0, 0, 10000000, function (err, val) {\n if (err) return callback(err);\n callback(null, val.data.toString());\n });\n });\n });\n });\n });\n });\n}\n\nfunction getDbusAddressFromFs () {\n const home = process.env.HOME;\n const display = process.env.DISPLAY;\n if (!display) {\n throw new Error('could not get DISPLAY environment variable to get dbus address');\n }\n\n const reg = /.*:([0-9]+)\\.?.*/;\n const match = display.match(reg);\n\n if (!match || !match[1]) {\n throw new Error('could not parse DISPLAY environment variable to get dbus address');\n }\n\n const displayNum = match[1];\n\n const machineId = fs.readFileSync('/var/lib/dbus/machine-id').toString().trim();\n const dbusInfo = fs.readFileSync(`${home}/.dbus/session-bus/${machineId}-${displayNum}`).toString().trim();\n for (let line of dbusInfo.split('\\n')) {\n line = line.trim();\n if (line.startsWith('DBUS_SESSION_BUS_ADDRESS=')) {\n let address = line.split('DBUS_SESSION_BUS_ADDRESS=')[1];\n if (!address) {\n throw new Error('DBUS_SESSION_BUS_ADDRESS variable is set incorrectly in dbus info file');\n }\n\n const removeQuotes = /^['\"]?(.*?)['\"]?$/;\n address = address.match(removeQuotes)[1];\n return address;\n }\n }\n\n throw new Error('DBUS_SESSION_BUS_ADDRESS was not set in dbus info file');\n}\n\nmodule.exports = {\n getDbusAddressFromFs: getDbusAddressFromFs,\n getDbusAddressFromWindowSelection: getDbusAddressFromWindowSelection\n};\n","const { parseSignature, collapseSignature } = require('./signature');\nconst { Variant } = require('./variant');\nconst message = require('./message');\n\nfunction valueIsMarshallVariant (value) {\n // used for the marshaller variant type\n return Array.isArray(value) && value.length === 2 && Array.isArray(value[0]) && value[0].length > 0 && value[0][0].type;\n}\n\nfunction marshallVariantToJs (variant) {\n // XXX The marshaller uses a different body format than what the connection\n // is expected to emit. These two formats should be unified.\n // parses a single complete variant in marshall format\n const type = variant[0][0];\n const value = variant[1][0];\n\n if (!type.child.length) {\n if (valueIsMarshallVariant(value)) {\n return new Variant(collapseSignature(value[0][0]), marshallVariantToJs(value));\n } else {\n return value;\n }\n }\n\n if (type.type === 'a') {\n if (type.child[0].type === 'y') {\n // this gives us a buffer\n return value;\n } else if (type.child[0].type === '{') {\n // this is an array of dictionary entries\n const result = {};\n for (let i = 0; i < value.length; ++i) {\n // dictionary keys must have basic types\n result[value[i][0]] = marshallVariantToJs([[type.child[0].child[1]], [value[i][1]]]);\n }\n return result;\n } else {\n // other arrays only have one type\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n result[i] = marshallVariantToJs([[type.child[0]], [value[i]]]);\n }\n return result;\n }\n } else if (type.type === '(') {\n // structs have types equal to the number of children\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n result[i] = marshallVariantToJs([[type.child[i]], [value[i]]]);\n }\n return result;\n }\n}\n\nfunction messageToJsFmt (message) {\n // XXX The marshaller uses a different body format than what the connection\n // is expected to emit. These two formats should be unified.\n const { signature = '', body = [] } = message;\n const bodyJs = [];\n const signatureTree = parseSignature(signature);\n for (let i = 0; i < signatureTree.length; ++i) {\n const tree = signatureTree[i];\n bodyJs.push(marshallVariantToJs([[tree], [body[i]]]));\n }\n\n message.body = bodyJs;\n message.signature = signature;\n return message;\n}\n\nfunction jsToMarshalFmt (signature, value) {\n // XXX The connection accepts a message body in plain js format and converts\n // it to the marshaller format for writing. These two formats should be\n // unified.\n if (value === undefined) {\n throw new Error(`expected value for signature: ${signature}`);\n }\n if (signature === undefined) {\n throw new Error(`expected signature for value: ${value}`);\n }\n\n let signatureStr = null;\n if (typeof signature === 'string') {\n signatureStr = signature;\n signature = parseSignature(signature)[0];\n } else {\n signatureStr = collapseSignature(signature);\n }\n\n if (signature.child.length === 0) {\n if (signature.type === 'v') {\n if (value.constructor !== Variant) {\n throw new Error(`expected a Variant for value (got ${typeof value})`);\n }\n return [signature.type, jsToMarshalFmt(value.signature, value.value)];\n } else {\n return [signature.type, value];\n }\n }\n\n if (signature.type === 'a' && signature.child[0].type === 'y' && value.constructor === Buffer) {\n // special case: ay is a buffer\n return [signatureStr, value];\n } else if (signature.type === 'a') {\n let result = [];\n if (signature.child[0].type === 'y') {\n result = value;\n } else if (signature.child[0].type === '{') {\n // this is an array of dictionary elements\n if (value.constructor !== Object) {\n throw new Error(`expecting an object for signature '${signatureStr}' (got ${typeof value})`);\n }\n for (const k of Object.keys(value)) {\n const v = value[k];\n if (v.constructor === Variant) {\n result.push([k, jsToMarshalFmt(v.signature, v.value)]);\n } else {\n result.push([k, jsToMarshalFmt(signature.child[0].child[1], v)[1]]);\n }\n }\n } else {\n if (!Array.isArray(value)) {\n throw new Error(`expecting an array for signature '${signatureStr}' (got ${typeof value})`);\n }\n for (const v of value) {\n if (v.constructor === Variant) {\n result.push(jsToMarshalFmt(v.signature, v.value));\n } else {\n result.push(jsToMarshalFmt(signature.child[0], v)[1]);\n }\n }\n }\n return [signatureStr, result];\n } else if (signature.type === '(') {\n if (!Array.isArray(value)) {\n throw new Error(`expecting an array for signature '${signatureStr}' (got ${typeof value})`);\n }\n if (value.length !== signature.child.length) {\n throw new Error(`expecting struct to have ${signature.child.length} members (got ${value.length} members)`);\n }\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n const v = value[i];\n if (signature.child[i] === 'v') {\n if (v.constructor !== Variant) {\n throw new Error(`expected a Variant for struct member ${i + 1} (got ${v})`);\n }\n result.push(jsToMarshalFmt(v.signature, v.value));\n } else {\n result.push(jsToMarshalFmt(signature.child[i], v)[1]);\n }\n }\n return [signatureStr, result];\n } else {\n throw new Error(`got unknown complex type: ${signature.type}`);\n }\n}\n\nfunction marshallMessage (msg) {\n // XXX The connection accepts a message body in plain js format and converts\n // it to the marshaller format for writing. These two formats should be\n // unified.\n const { signature = '', body = [] } = msg;\n\n const signatureTree = parseSignature(signature);\n\n if (signatureTree.length !== body.length) {\n throw new Error(`Expected ${signatureTree.length} body elements for signature '${signature}' (got ${body.length})`);\n }\n\n const marshallerBody = [];\n for (let i = 0; i < body.length; ++i) {\n if (signatureTree[i].type === 'v') {\n if (body[i].constructor !== Variant) {\n throw new Error(`Expected a Variant() argument for position ${i + 1} (value='${body[i]}')`);\n }\n marshallerBody.push(jsToMarshalFmt(body[i].signature, body[i].value));\n } else {\n marshallerBody.push(jsToMarshalFmt(signatureTree[i], body[i])[1]);\n }\n }\n\n msg.signature = signature;\n msg.body = marshallerBody;\n return message.marshall(msg);\n}\n\nmodule.exports = {\n messageToJsFmt: messageToJsFmt,\n marshallMessage: marshallMessage\n};\n","var Stream = require('stream')\n\n// through\n//\n// a stream that does nothing but re-emit the input.\n// useful for aggregating a series of changing but not ending streams into one stream)\n\nexports = module.exports = through\nthrough.through = through\n\n//create a readable writable stream.\n\nfunction through (write, end, opts) {\n write = write || function (data) { this.queue(data) }\n end = end || function () { this.queue(null) }\n\n var ended = false, destroyed = false, buffer = [], _ended = false\n var stream = new Stream()\n stream.readable = stream.writable = true\n stream.paused = false\n\n// stream.autoPause = !(opts && opts.autoPause === false)\n stream.autoDestroy = !(opts && opts.autoDestroy === false)\n\n stream.write = function (data) {\n write.call(this, data)\n return !stream.paused\n }\n\n function drain() {\n while(buffer.length && !stream.paused) {\n var data = buffer.shift()\n if(null === data)\n return stream.emit('end')\n else\n stream.emit('data', data)\n }\n }\n\n stream.queue = stream.push = function (data) {\n// console.error(ended)\n if(_ended) return stream\n if(data === null) _ended = true\n buffer.push(data)\n drain()\n return stream\n }\n\n //this will be registered as the first 'end' listener\n //must call destroy next tick, to make sure we're after any\n //stream piped from here.\n //this is only a problem if end is not emitted synchronously.\n //a nicer way to do this is to make sure this is the last listener for 'end'\n\n stream.on('end', function () {\n stream.readable = false\n if(!stream.writable && stream.autoDestroy)\n process.nextTick(function () {\n stream.destroy()\n })\n })\n\n function _end () {\n stream.writable = false\n end.call(stream)\n if(!stream.readable && stream.autoDestroy)\n stream.destroy()\n }\n\n stream.end = function (data) {\n if(ended) return\n ended = true\n if(arguments.length) stream.write(data)\n _end() // will emit or queue\n return stream\n }\n\n stream.destroy = function () {\n if(destroyed) return\n destroyed = true\n ended = true\n buffer.length = 0\n stream.writable = stream.readable = false\n stream.emit('close')\n return stream\n }\n\n stream.pause = function () {\n if(stream.paused) return\n stream.paused = true\n return stream\n }\n\n stream.resume = function () {\n if(stream.paused) {\n stream.paused = false\n stream.emit('resume')\n }\n drain()\n //may have become paused again,\n //as drain emits 'data'.\n if(!stream.paused)\n stream.emit('drain')\n return stream\n }\n return stream\n}\n\n","\n'use strict';\n\nvar Stream = require('stream')\n\n// from\n//\n// a stream that reads from an source.\n// source may be an array, or a function.\n// from handles pause behaviour for you.\n\nmodule.exports =\nfunction from (source) {\n if(Array.isArray(source)) {\n\t\tvar source_index = 0, source_len = source.length;\n return from (function (i) {\n if(source_index < source_len)\n this.emit('data', source[source_index++])\n else\n this.emit('end')\n return true\n })\n }\n var s = new Stream(), i = 0\n s.ended = false\n s.started = false\n s.readable = true\n s.writable = false\n s.paused = false\n s.ended = false\n s.pause = function () {\n s.started = true\n s.paused = true\n }\n function next () {\n s.started = true\n if(s.ended) return\n while(!s.ended && !s.paused && source.call(s, i++, function () {\n if(!s.ended && !s.paused)\n process.nextTick(next);\n }))\n ;\n }\n s.resume = function () {\n s.started = true\n s.paused = false\n next()\n }\n s.on('end', function () {\n s.ended = true\n s.readable = false\n process.nextTick(s.destroy)\n })\n s.destroy = function () {\n s.ended = true\n s.emit('close') \n }\n /*\n by default, the stream will start emitting at nextTick\n if you want, you can pause it, after pipeing.\n you can also resume before next tick, and that will also\n work.\n */\n process.nextTick(function () {\n if(!s.started) s.resume()\n })\n return s\n}\n","var Stream = require(\"stream\")\nvar writeMethods = [\"write\", \"end\", \"destroy\"]\nvar readMethods = [\"resume\", \"pause\"]\nvar readEvents = [\"data\", \"close\"]\nvar slice = Array.prototype.slice\n\nmodule.exports = duplex\n\nfunction forEach (arr, fn) {\n if (arr.forEach) {\n return arr.forEach(fn)\n }\n\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i], i)\n }\n}\n\nfunction duplex(writer, reader) {\n var stream = new Stream()\n var ended = false\n\n forEach(writeMethods, proxyWriter)\n\n forEach(readMethods, proxyReader)\n\n forEach(readEvents, proxyStream)\n\n reader.on(\"end\", handleEnd)\n\n writer.on(\"drain\", function() {\n stream.emit(\"drain\")\n })\n\n writer.on(\"error\", reemit)\n reader.on(\"error\", reemit)\n\n stream.writable = writer.writable\n stream.readable = reader.readable\n\n return stream\n\n function proxyWriter(methodName) {\n stream[methodName] = method\n\n function method() {\n return writer[methodName].apply(writer, arguments)\n }\n }\n\n function proxyReader(methodName) {\n stream[methodName] = method\n\n function method() {\n stream.emit(methodName)\n var func = reader[methodName]\n if (func) {\n return func.apply(reader, arguments)\n }\n reader.emit(methodName)\n }\n }\n\n function proxyStream(methodName) {\n reader.on(methodName, reemit)\n\n function reemit() {\n var args = slice.call(arguments)\n args.unshift(methodName)\n stream.emit.apply(stream, args)\n }\n }\n\n function handleEnd() {\n if (ended) {\n return\n }\n ended = true\n var args = slice.call(arguments)\n args.unshift(\"end\")\n stream.emit.apply(stream, args)\n }\n\n function reemit(err) {\n stream.emit(\"error\", err)\n }\n}\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\n\nvar Stream = require('stream').Stream\n\n\n//create an event stream and apply function to each .write\n//emitting each response as data\n//unless it's an empty callback\n\nmodule.exports = function (mapper, opts) {\n\n var stream = new Stream()\n , self = this\n , inputs = 0\n , outputs = 0\n , ended = false\n , paused = false\n , destroyed = false\n , lastWritten = 0\n , inNext = false\n\n this.opts = opts || {};\n var errorEventName = this.opts.failures ? 'failure' : 'error';\n\n // Items that are not ready to be written yet (because they would come out of\n // order) get stuck in a queue for later.\n var writeQueue = {}\n\n stream.writable = true\n stream.readable = true\n\n function queueData (data, number) {\n var nextToWrite = lastWritten + 1\n\n if (number === nextToWrite) {\n // If it's next, and its not undefined write it\n if (data !== undefined) {\n stream.emit.apply(stream, ['data', data])\n }\n lastWritten ++\n nextToWrite ++\n } else {\n // Otherwise queue it for later.\n writeQueue[number] = data\n }\n\n // If the next value is in the queue, write it\n if (writeQueue.hasOwnProperty(nextToWrite)) {\n var dataToWrite = writeQueue[nextToWrite]\n delete writeQueue[nextToWrite]\n return queueData(dataToWrite, nextToWrite)\n }\n\n outputs ++\n if(inputs === outputs) {\n if(paused) paused = false, stream.emit('drain') //written all the incoming events\n if(ended) end()\n }\n }\n\n function next (err, data, number) {\n if(destroyed) return\n inNext = true\n\n if (!err || self.opts.failures) {\n queueData(data, number)\n }\n\n if (err) {\n stream.emit.apply(stream, [ errorEventName, err ]);\n }\n\n inNext = false;\n }\n\n // Wrap the mapper function by calling its callback with the order number of\n // the item in the stream.\n function wrappedMapper (input, number, callback) {\n return mapper.call(null, input, function(err, data){\n callback(err, data, number)\n })\n }\n\n stream.write = function (data) {\n if(ended) throw new Error('map stream is not writable')\n inNext = false\n inputs ++\n\n try {\n //catch sync errors and handle them like async errors\n var written = wrappedMapper(data, inputs, next)\n paused = (written === false)\n return !paused\n } catch (err) {\n //if the callback has been called syncronously, and the error\n //has occured in an listener, throw it again.\n if(inNext)\n throw err\n next(err)\n return !paused\n }\n }\n\n function end (data) {\n //if end was called with args, write it, \n ended = true //write will emit 'end' if ended is true\n stream.writable = false\n if(data !== undefined) {\n return queueData(data, inputs)\n } else if (inputs == outputs) { //wait for processing \n stream.readable = false, stream.emit('end'), stream.destroy() \n }\n }\n\n stream.end = function (data) {\n if(ended) return\n end()\n }\n\n stream.destroy = function () {\n ended = destroyed = true\n stream.writable = stream.readable = paused = false\n process.nextTick(function () {\n stream.emit('close')\n })\n }\n stream.pause = function () {\n paused = true\n }\n\n stream.resume = function () {\n paused = false\n }\n\n return stream\n}\n\n\n\n\n","//through@2 handles this by default!\nmodule.exports = require('through')\n\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\n\nvar through = require('through')\nvar Decoder = require('string_decoder').StringDecoder\n\nmodule.exports = split\n\n//TODO pass in a function to map across the lines.\n\nfunction split (matcher, mapper, options) {\n var decoder = new Decoder()\n var soFar = ''\n var maxLength = options && options.maxLength;\n if('function' === typeof matcher)\n mapper = matcher, matcher = null\n if (!matcher)\n matcher = /\\r?\\n/\n\n function emit(stream, piece) {\n if(mapper) {\n try {\n piece = mapper(piece)\n }\n catch (err) {\n return stream.emit('error', err)\n }\n if('undefined' !== typeof piece)\n stream.queue(piece)\n }\n else\n stream.queue(piece)\n }\n\n function next (stream, buffer) {\n var pieces = ((soFar != null ? soFar : '') + buffer).split(matcher)\n soFar = pieces.pop()\n\n if (maxLength && soFar.length > maxLength)\n stream.emit('error', new Error('maximum buffer reached'))\n\n for (var i = 0; i < pieces.length; i++) {\n var piece = pieces[i]\n emit(stream, piece)\n }\n }\n\n return through(function (b) {\n next(this, decoder.write(b))\n },\n function () {\n if(decoder.end)\n next(this, decoder.end())\n if(soFar != null)\n emit(this, soFar)\n this.queue(null)\n })\n}\n\n","var duplexer = require('duplexer')\n\nmodule.exports = function () {\n\n var streams = [].slice.call(arguments)\n , first = streams[0]\n , last = streams[streams.length - 1]\n , thepipe = duplexer(first, last)\n\n if(streams.length == 1)\n return streams[0]\n else if (!streams.length)\n throw new Error('connect called with empty args')\n\n //pipe all the streams together\n\n function recurse (streams) {\n if(streams.length < 2)\n return\n streams[0].pipe(streams[1])\n recurse(streams.slice(1)) \n }\n \n recurse(streams)\n \n function onerror () {\n var args = [].slice.call(arguments)\n args.unshift('error')\n thepipe.emit.apply(thepipe, args)\n }\n \n //es.duplex already reemits the error from the first and last stream.\n //add a listener for the inner streams in the pipeline.\n for(var i = 1; i < streams.length - 1; i ++)\n streams[i].on('error', onerror)\n\n return thepipe\n}\n\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\nvar Stream = require('stream').Stream\n , es = exports\n , through = require('through')\n , from = require('from')\n , duplex = require('duplexer')\n , map = require('map-stream')\n , pause = require('pause-stream')\n , split = require('split')\n , pipeline = require('stream-combiner')\n , immediately = global.setImmediate || process.nextTick;\n\nes.Stream = Stream //re-export Stream from core\nes.through = through\nes.from = from\nes.duplex = duplex\nes.map = map\nes.pause = pause\nes.split = split\nes.pipeline = es.connect = es.pipe = pipeline\n// merge / concat\n//\n// combine multiple streams into a single stream.\n// will emit end only once\n\nes.concat = //actually this should be called concat\nes.merge = function (/*streams...*/) {\n var toMerge = [].slice.call(arguments)\n if (toMerge.length === 1 && (toMerge[0] instanceof Array)) {\n toMerge = toMerge[0] //handle array as arguments object\n }\n var stream = new Stream()\n stream.setMaxListeners(0) // allow adding more than 11 streams\n var endCount = 0\n stream.writable = stream.readable = true\n\n if (toMerge.length) {\n toMerge.forEach(function (e) {\n e.pipe(stream, {end: false})\n var ended = false\n e.on('end', function () {\n if(ended) return\n ended = true\n endCount ++\n if(endCount == toMerge.length)\n stream.emit('end')\n })\n })\n } else {\n process.nextTick(function () {\n stream.emit('end')\n })\n }\n \n stream.write = function (data) {\n this.emit('data', data)\n }\n stream.destroy = function () {\n toMerge.forEach(function (e) {\n if(e.destroy) e.destroy()\n })\n }\n return stream\n}\n\n\n// writable stream, collects all events into an array\n// and calls back when 'end' occurs\n// mainly I'm using this to test the other functions\n\nes.writeArray = function (done) {\n if ('function' !== typeof done)\n throw new Error('function writeArray (done): done must be function')\n\n var a = new Stream ()\n , array = [], isDone = false\n a.write = function (l) {\n array.push(l)\n }\n a.end = function () {\n isDone = true\n done(null, array)\n }\n a.writable = true\n a.readable = false\n a.destroy = function () {\n a.writable = a.readable = false\n if(isDone) return\n done(new Error('destroyed before end'), array)\n }\n return a\n}\n\n//return a Stream that reads the properties of an object\n//respecting pause() and resume()\n\nes.readArray = function (array) {\n var stream = new Stream()\n , i = 0\n , paused = false\n , ended = false\n\n stream.readable = true\n stream.writable = false\n\n if(!Array.isArray(array))\n throw new Error('event-stream.read expects an array')\n\n stream.resume = function () {\n if(ended) return\n paused = false\n var l = array.length\n while(i < l && !paused && !ended) {\n stream.emit('data', array[i++])\n }\n if(i == l && !ended)\n ended = true, stream.readable = false, stream.emit('end')\n }\n process.nextTick(stream.resume)\n stream.pause = function () {\n paused = true\n }\n stream.destroy = function () {\n ended = true\n stream.emit('close')\n }\n return stream\n}\n\n//\n// readable (asyncFunction)\n// return a stream that calls an async function while the stream is not paused.\n//\n// the function must take: (count, callback) {...\n//\n\nes.readable =\nfunction (func, continueOnError) {\n var stream = new Stream()\n , i = 0\n , paused = false\n , ended = false\n , reading = false\n\n stream.readable = true\n stream.writable = false\n\n if('function' !== typeof func)\n throw new Error('event-stream.readable expects async function')\n\n stream.on('end', function () { ended = true })\n\n function get (err, data) {\n\n if(err) {\n stream.emit('error', err)\n if(!continueOnError) stream.emit('end')\n } else if (arguments.length > 1)\n stream.emit('data', data)\n\n immediately(function () {\n if(ended || paused || reading) return\n try {\n reading = true\n func.call(stream, i++, function () {\n reading = false\n get.apply(null, arguments)\n })\n } catch (err) {\n stream.emit('error', err)\n }\n })\n }\n stream.resume = function () {\n paused = false\n get()\n }\n process.nextTick(get)\n stream.pause = function () {\n paused = true\n }\n stream.destroy = function () {\n stream.emit('end')\n stream.emit('close')\n ended = true\n }\n return stream\n}\n\n\n//\n// map sync\n//\n\nes.mapSync = function (sync) {\n return es.through(function write(data) {\n var mappedData\n try {\n mappedData = sync(data)\n } catch (err) {\n return this.emit('error', err)\n }\n if (mappedData !== undefined)\n this.emit('data', mappedData)\n })\n}\n\n//\n// log just print out what is coming through the stream, for debugging\n//\n\nes.log = function (name) {\n return es.through(function (data) {\n var args = [].slice.call(arguments)\n if(name) console.error(name, data)\n else console.error(data)\n this.emit('data', data)\n })\n}\n\n\n//\n// child -- pipe through a child process\n//\n\nes.child = function (child) {\n\n return es.duplex(child.stdin, child.stdout)\n\n}\n\n//\n// parse\n//\n// must be used after es.split() to ensure that each chunk represents a line\n// source.pipe(es.split()).pipe(es.parse())\n\nes.parse = function (options) {\n var emitError = !!(options ? options.error : false)\n return es.through(function (data) {\n var obj\n try {\n if(data) //ignore empty lines\n obj = JSON.parse(data.toString())\n } catch (err) {\n if (emitError)\n return this.emit('error', err)\n return console.error(err, 'attempting to parse:', data)\n }\n //ignore lines that where only whitespace.\n if(obj !== undefined)\n this.emit('data', obj)\n })\n}\n//\n// stringify\n//\n\nes.stringify = function () {\n var Buffer = require('buffer').Buffer\n return es.mapSync(function (e){\n return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\\n'\n })\n}\n\n//\n// replace a string within a stream.\n//\n// warn: just concatenates the string and then does str.split().join().\n// probably not optimal.\n// for smallish responses, who cares?\n// I need this for shadow-npm so it's only relatively small json files.\n\nes.replace = function (from, to) {\n return es.pipeline(es.split(from), es.join(to))\n}\n\n//\n// join chunks with a joiner. just like Array#join\n// also accepts a callback that is passed the chunks appended together\n// this is still supported for legacy reasons.\n//\n\nes.join = function (str) {\n\n //legacy api\n if('function' === typeof str)\n return es.wait(str)\n\n var first = true\n return es.through(function (data) {\n if(!first)\n this.emit('data', str)\n first = false\n this.emit('data', data)\n return true\n })\n}\n\n\n//\n// wait. callback when 'end' is emitted, with all chunks appended as string.\n//\n\nes.wait = function (callback) {\n var arr = []\n return es.through(function (data) { arr.push(data) },\n function () {\n var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr)\n : arr.join('')\n this.emit('data', body)\n this.emit('end')\n if(callback) callback(null, body)\n })\n}\n\nes.pipeable = function () {\n throw new Error('[EVENT-STREAM] es.pipeable is deprecated')\n}\n","const EventEmitter = require('events').EventEmitter;\nconst net = require('net');\nconst message = require('./message');\nconst clientHandshake = require('./handshake');\nconst { getDbusAddressFromFs } = require('./address-x11');\nconst { Message } = require('./message-type');\nconst { messageToJsFmt, marshallMessage } = require('./marshall-compat');\n\nfunction createStream (opts) {\n let { busAddress, negotiateUnixFd } = opts;\n\n if (negotiateUnixFd === undefined) {\n negotiateUnixFd = false;\n }\n\n // TODO according to the dbus spec, we should start a new server if the bus\n // address cannot be found.\n if (!busAddress) {\n busAddress = process.env.DBUS_SESSION_BUS_ADDRESS;\n }\n if (!busAddress) {\n busAddress = getDbusAddressFromFs();\n }\n\n const addresses = busAddress.split(';');\n for (let i = 0; i < addresses.length; ++i) {\n const address = addresses[i];\n const familyParams = address.split(':');\n const family = familyParams[0];\n const params = {};\n familyParams[1].split(',').forEach(function (p) {\n const keyVal = p.split('=');\n params[keyVal[0]] = keyVal[1];\n });\n\n try {\n switch (family.toLowerCase()) {\n case 'tcp': {\n const host = params.host || 'localhost';\n const port = params.port;\n return net.createConnection(port, host);\n }\n case 'unix': {\n if (params.socket) {\n return net.createConnection(params.socket);\n }\n if (params.abstract) {\n const usocket = require('usocket');\n const sock = new usocket.USocket({ path: '\\u0000' + params.abstract });\n sock.supportsUnixFd = negotiateUnixFd;\n return sock;\n }\n if (params.path) {\n try {\n const usocket = require('usocket');\n const sock = new usocket.USocket({ path: params.path });\n sock.supportsUnixFd = negotiateUnixFd;\n return sock;\n } catch (err) {\n // TODO: maybe emit warning?\n return net.createConnection(params.path);\n }\n }\n throw new Error(\n \"not enough parameters for 'unix' connection - you need to specify 'socket' or 'abstract' or 'path' parameter\"\n );\n }\n case 'unixexec': {\n const eventStream = require('event-stream');\n const spawn = require('child_process').spawn;\n const args = [];\n for (let n = 1; params['arg' + n]; n++) args.push(params['arg' + n]);\n const child = spawn(params.path, args);\n // duplex socket is auto connected so emit connect event next frame\n setTimeout(() => eventStream.emit('connected'), 0);\n\n return eventStream.duplex(child.stdin, child.stdout);\n }\n default: {\n throw new Error('unknown address type:' + family);\n }\n }\n } catch (e) {\n if (i < addresses.length - 1) {\n console.warn(e.message);\n continue;\n } else {\n throw e;\n }\n }\n }\n}\n\nfunction createConnection (opts) {\n const self = new EventEmitter();\n opts = opts || {};\n const stream = (self.stream = createStream(opts));\n stream.setNoDelay && stream.setNoDelay();\n\n stream.on('error', function (err) {\n // forward network and stream errors\n self.emit('error', err);\n });\n\n stream.on('end', function () {\n self.emit('end');\n self.message = function () {\n self.emit('error', new Error('Tried to write a message to a closed stream'));\n };\n });\n\n self.end = function () {\n stream.end();\n return self;\n };\n\n function afterHandshake (error, guid) {\n if (error) {\n return self.emit('error', error);\n }\n self.guid = guid;\n self.emit('connect');\n message.unmarshalMessages(\n stream,\n function (message) {\n try {\n message = new Message(messageToJsFmt(message));\n } catch (err) {\n self.emit('error', err, `There was an error receiving a message (this is probably a bug in dbus-next): ${message}`);\n return;\n }\n self.emit('message', message);\n },\n opts\n );\n }\n stream.once('connect', () => clientHandshake(stream, opts, afterHandshake));\n stream.once('connected', () => clientHandshake(stream, opts, afterHandshake));\n\n self._messages = [];\n\n // pre-connect version, buffers all messages. replaced after connect\n self.message = function (msg) {\n self._messages.push(msg);\n };\n\n self.once('connect', function () {\n self.state = 'connected';\n for (let i = 0; i < self._messages.length; ++i) {\n const [data, fds] = marshallMessage(self._messages[i]);\n if (stream.supportsUnixFd) {\n stream.write({ data, fds });\n } else {\n stream.write(data);\n }\n }\n self._messages.length = 0;\n\n // no need to buffer once connected\n self.message = function (msg) {\n if (!stream.writable) {\n throw new Error('Cannot send message, stream is closed');\n }\n const [data, fds] = marshallMessage(msg);\n if (stream.supportsUnixFd) {\n stream.write({ data, fds });\n } else {\n if (fds.length > 0) {\n console.warn('Sending file descriptors is not supported in current bus connection');\n }\n stream.write(data);\n }\n };\n });\n\n return self;\n}\n\nmodule.exports = createConnection;\n","const constants = require('./lib/constants');\nconst MessageBus = require('./lib/bus');\nconst errors = require('./lib/errors');\nconst {Variant} = require('./lib//variant');\nconst {Message} = require('./lib/message-type.js');\nconst iface = require('./lib/service/interface');\nconst createConnection = require('./lib/connection.js');\n\nlet createClient = function(params) {\n let connection = createConnection(params || {});\n return new MessageBus(connection);\n};\n\n/**\n * Create a new {@link MessageBus} client on the DBus system bus to connect to\n * interfaces or request service names. Connects to the socket specified by the\n * `DBUS_SYSTEM_BUS_ADDRESS` environment variable or\n * `unix:path=/var/run/dbus/system_bus_socket`.\n *\n * @param {object} [options] - Options for `MessageBus` creation.\n * @param {object} [options.negotiateUnixFd] - Whether this bus should support the negotiation of Unix file descriptors.\n */\nmodule.exports.systemBus = function(opts) {\n if(!opts)\n opts = {};\n return createClient({\n negotiateUnixFd: opts.negotiateUnixFd,\n busAddress:\n process.env.DBUS_SYSTEM_BUS_ADDRESS ||\n 'unix:path=/var/run/dbus/system_bus_socket'\n });\n};\n\n/**\n * Create a new {@link MessageBus} client on the DBus session bus to connect to\n * interfaces or request service names.\n *\n * @param {object} [options] - Options for `MessageBus` creation.\n * @param {object} [options.busAddress] - The socket path for the session bus.\n * @param {object} [options.negotiateUnixFd] - Whether this bus should support the negotiation of Unix file descriptors.\n * Defaults to finding the bus address in the manner specified in the DBus\n * specification. The bus address will first be read from the\n * `DBUS_SESSION_BUS_ADDRESS` environment variable and when that is not\n * available, found from the `$HOME/.dbus` directory.\n */\nmodule.exports.sessionBus = function(opts) {\n return createClient(opts);\n};\n\n/**\n * Use JSBI as a polyfill for long integer types ('x' and 't') in the client\n * and the service. This is required for Node verisons that do not support the\n * native `BigInt` class which is used by default for these types (version <\n * 10.8.0).\n *\n * @function\n * @param {boolean} compat - pass `true` to use JSBI.\n */\nmodule.exports.setBigIntCompat = require('./lib/library-options').setBigIntCompat\n\nmodule.exports.NameFlag = constants.NameFlag;\nmodule.exports.RequestNameReply = constants.RequestNameReply;\nmodule.exports.ReleaseNameReply = constants.ReleaseNameReply;\nmodule.exports.MessageType = constants.MessageType;\nmodule.exports.MessageFlag = constants.MessageFlag;\n\nmodule.exports.interface = iface;\nmodule.exports.Variant = Variant;\nmodule.exports.Message = Message;\nmodule.exports.validators = require('./lib/validators');\nmodule.exports.DBusError = errors.DBusError;\n","/** Canonical runtime je jediným hodnotovým vlastníkem root i observed fasády. */\nexport { connect, connectObserved } from './client';\nexport { TaskError } from './errors';\nexport { prepareObserved } from './observed-validation';\nexport { nullIO } from './types';\nexport { prepare } from './validation';\nexport type {\n\tObservedLookupResult, ObservedOutputEvent, ObservedProcessSnapshot, ObservedStartOptions,\n\tObservedStartReceipt, ObservedStartResult, ObservedStopReceipt, ObservedTaskClient,\n\tObservedTaskIdentity, ObservedTaskIntent, ObservedTaskObservation, ObservedTaskReference,\n\tObservedTaskSnapshot, ObservedTaskSpec,\n} from './observed-types';\nexport type {\n\tCleanupState, ConnectOptions, DiagnosticEvent, ErrorCode, ErrorDetails,\n\tLookupResult, ManagerIdentity, ReleaseOptions, ReleaseReceipt, StartReceipt, StopOptions,\n\tStopReceipt, SystemdProperty, TaskClient, TaskEvidence, TaskIdentity,\n\tTaskInput, TaskIntent, TaskIO, TaskOutput, TaskReference, TaskResult,\n\tTaskSnapshot, TaskSpec, WaitOptions,\n} from './types';\n","import * as crypto from 'node:crypto';\nimport * as clientCore from './client-core';\nimport * as diagnostics from './diagnostics';\nimport * as errors from './errors';\nimport * as io from './io';\nimport * as observedOperations from './observed-operations';\nimport * as observedSystemd from './observed-systemd';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport * as transport from './transport';\nimport * as validation from './validation';\nimport * as waiting from './waiting';\nimport type * as observedTypes from './observed-types';\nimport type * as types from './types';\n\n/** Library-owned observation and descriptor resources around manager-owned task processes. */\nexport class SystemdTaskClient implements types.TaskClient, observedTypes.ObservedTaskClient {\n\t/** Binding used by every persisted reference created through this client. */\n\treadonly manager: types.ManagerIdentity;\n\t/** Sdílené vlastnictví transportu, mutation front, reads a lokálních handles. */\n\tprivate readonly core: clientCore.ClientCore;\n\t/** Tříjednotkový codec deleguje do stejného core místo druhého klienta. */\n\tprivate readonly observed: observedOperations.ObservedOperations;\n\n\t/** Bind the concrete adapter; the public entrypoint creates it only during connect(). */\n\tconstructor(adapter: transport.Transport, sink: diagnostics.Diagnostics) {\n\t\tthis.core = new clientCore.ClientCore(adapter, sink);\n\t\tthis.manager = this.core.manager;\n\t\tthis.observed = new observedOperations.ObservedOperations(this.core);\n\t}\n\n\t/** Read both owned units concurrently, sharing only requests already in progress. */\n\tprivate async readPair(identity: types.TaskIdentity): Promise<systemd.UnitPair> {\n\t\tconst [task, retention] = await this.core.readUnits(identity, [identity.unitName, identity.retentionUnitName]);\n\t\treturn { task: task ?? null, retention: retention ?? null };\n\t}\n\n\t/** Ownership is checked before invoking any lifecycle or cleanup operation on names. */\n\tprivate async checkedPair(target: types.TaskIntent | types.TaskReference): Promise<systemd.UnitPair> {\n\t\tif ('manager' in target) systemd.assertManager(target.manager, this.manager);\n\t\tconst pair = await this.readPair(target);\n\t\tsystemd.assertOwnership(target, pair);\n\t\tif ('manager' in target) systemd.assertReference(target, pair);\n\t\treturn pair;\n\t}\n\n\t/** An incomplete auxiliary record is distinct from both a found result and total absence. */\n\tprivate async lookupInternal(target: types.TaskIntent | types.TaskReference): Promise<types.LookupResult> {\n\t\tconst pair = await this.checkedPair(target);\n\t\tif (!pair.task && !pair.retention) return { status: 'not-found', identity: validation.identityOnly(target) };\n\t\tif (!pair.task) return { status: 'incomplete', reference: systemd.reference(target, this.manager, pair) };\n\t\tconst snapshot = await systemd.snapshot(target, this.manager, pair);\n\t\treturn { status: 'found', reference: snapshot.reference, snapshot };\n\t}\n\n\t/** The returned receipt proves only manager acceptance; callers observe execution separately. */\n\tasync start(value: types.TaskIntent, channels: types.TaskIO): Promise<types.StartReceipt> {\n\t\tconst intent = validation.validateIntent(value);\n\t\tconst validatedIO = validation.validateIO(channels);\n\t\treturn await this.core.diagnostics.run(intent, /** Establish task correlation before queueing creation. */ () => this.core.mutate(intent, /** Own submission staging and descriptor cleanup for this one attempt. */ async () => {\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet opened: io.OpenIO | undefined;\n\t\t\ttry {\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.assertUnattempted(intent);\n\t\t\t\tconst inherited = await this.core.transport.readEnvironment();\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\topened = io.openIO(validatedIO);\n\t\t\t\tconst mapped = systemd.creationProperties(intent, opened, inherited);\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.markAttempt(intent);\n\t\t\t\tstage = 'submitted';\n\t\t\t\tthis.core.diagnostics.emit('start.submitted');\n\t\t\t\tconst jobPath = await this.core.transport.start(intent.unitName, mapped.task, [{ name: intent.retentionUnitName, properties: mapped.retention }]);\n\t\t\t\tstage = 'accepted';\n\t\t\t\tthis.core.diagnostics.emit('start.accepted');\n\t\t\t\tthis.core.hub.notify(intent.unitName);\n\t\t\t\treturn Object.freeze({ outcome: 'accepted', identity: validation.identityOnly(intent), manager: this.manager, jobPath });\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'start', intent, stage);\n\t\t\t\tthis.core.diagnostics.emit('start.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { opened?.close(); }\n\t\t}));\n\t}\n\n\t/** Deleguje observed start do tříjednotkového codecu nad stejným transportem. */\n\tasync startObserved(intent: observedTypes.ObservedTaskIntent, options: observedTypes.ObservedStartOptions): Promise<observedTypes.ObservedStartResult> {\n\t\treturn await this.observed.startObserved(intent, options);\n\t}\n\n\t/** Read existing evidence without treating absence as permission for another start. */\n\t/** Observed overload čte tříjednotkovou topologii bez reconnectu outputu. */\n\tlookup(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedLookupResult>;\n\tlookup(value: types.TaskIntent | types.TaskReference): Promise<types.LookupResult>;\n\t/** Směruje podle explicitního versioned kind, nikoliv podle package entrypointu. */\n\tasync lookup(value: types.TaskIntent | types.TaskReference | observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<types.LookupResult | observedTypes.ObservedLookupResult> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.lookup(value as observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference);\n\t\tconst target = validation.validateTarget(value);\n\t\treturn await this.core.diagnostics.run(target, /** Keep lookup diagnostics in the requested task scope. */ () => this.lookupInternal(target));\n\t}\n\n\t/** Observe an exact reference; missing units and manager errors remain distinct categories. */\n\t/** Observed overload vyžaduje exact invocation identity všech dostupných rolí. */\n\tinspect(value: observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedTaskSnapshot>;\n\tinspect(value: types.TaskReference): Promise<types.TaskSnapshot>;\n\t/** Validuje a směruje snapshot do správného topology codecu. */\n\tasync inspect(value: types.TaskReference | observedTypes.ObservedTaskReference): Promise<types.TaskSnapshot | observedTypes.ObservedTaskSnapshot> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.inspect(value as observedTypes.ObservedTaskReference);\n\t\tconst reference = validation.validateReference(value);\n\t\treturn await this.core.diagnostics.run(reference, /** Inspect evidence in the exact reference correlation scope. */ async () => {\n\t\t\tconst found = await this.lookupInternal(reference);\n\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The referenced task result is unavailable.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'task-unit-missing', taskId: reference.id });\n\t\t\treturn found.snapshot;\n\t\t});\n\t}\n\n\t/** Subscribe before reading, then pin newly observed IDs while waiting on an intention. */\n\tprivate async waitInternal(target: types.TaskIntent | types.TaskReference, control: waiting.WaitControl): Promise<types.TaskSnapshot> {\n\t\tcontrol.check();\n\t\tthis.core.assertOpen();\n\t\tconst watch = this.core.hub.watch(target.unitName);\n\t\tlet mainInvocation: string | null = null;\n\t\tlet retentionInvocation: string | null = null;\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tcontrol.check();\n\t\t\t\tconst generation = watch.version();\n\t\t\t\tconst found = await control.race(this.lookupInternal(target));\n\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task result is no longer available.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'task-unit-missing', taskId: target.id });\n\t\t\t\tconst captured = found.reference;\n\t\t\t\tif ((mainInvocation !== null && captured.invocationId !== mainInvocation) || (retentionInvocation !== null && captured.retentionInvocationId !== retentionInvocation)) throw new errors.TaskError('IDENTITY_CONFLICT', 'The task identity changed while waiting.', { reason: 'invocation-mismatch', taskId: target.id });\n\t\t\t\tmainInvocation = captured.invocationId;\n\t\t\t\tretentionInvocation = captured.retentionInvocationId;\n\t\t\t\tif (found.snapshot.managerTerminal) {\n\t\t\t\t\tthis.core.diagnostics.emit(found.snapshot.cleanup === 'complete' ? 'wait.completed' : 'wait.cleanup-incomplete');\n\t\t\t\t\treturn found.snapshot;\n\t\t\t\t}\n\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t}\n\t\t} finally { watch.close(); }\n\t}\n\n\t/** Local abort and timeout leave the task, other waiters, and manager timers untouched. */\n\t/** Observed overload čeká na payload i guardian cleanup. */\n\twait(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options?: types.WaitOptions): Promise<observedTypes.ObservedTaskSnapshot>;\n\twait(value: types.TaskIntent | types.TaskReference, options?: types.WaitOptions): Promise<types.TaskSnapshot>;\n\t/** Zachová stejný local cancellation kontrakt pro obě topologie. */\n\tasync wait(value: types.TaskIntent | types.TaskReference | observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options: types.WaitOptions = {}): Promise<types.TaskSnapshot | observedTypes.ObservedTaskSnapshot> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.wait(value as observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options);\n\t\tconst target = validation.validateTarget(value);\n\t\tconst validated = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(target, /** Own independent cancellation and diagnostics for this waiter. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(validated);\n\t\t\ttry { return await this.waitInternal(target, control); }\n\t\t\tcatch (error) {\n\t\t\t\tif (error instanceof errors.TaskError) this.core.diagnostics.emit('wait.error', error.code);\n\t\t\t\tthrow error;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Receipt acceptance survives cancellation; an in-flight unacknowledged stop remains unknown. */\n\t/** Observed overload zastavuje jen payload a čeká na guardian drain. */\n\tstop(value: observedTypes.ObservedTaskReference, options?: types.StopOptions): Promise<observedTypes.ObservedStopReceipt>;\n\tstop(value: types.TaskReference, options?: types.StopOptions): Promise<types.StopReceipt>;\n\t/** Sdílí mutation serializaci, ale zachová topology-specific receipt. */\n\tasync stop(value: types.TaskReference | observedTypes.ObservedTaskReference, options: types.StopOptions = {}): Promise<types.StopReceipt | observedTypes.ObservedStopReceipt> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.stop(value as observedTypes.ObservedTaskReference, options);\n\t\tconst reference = validation.validateReference(value);\n\t\tconst validated = validation.validateWaitOptions(options, true);\n\t\treturn await this.core.diagnostics.run(reference, /** Preserve stop delivery evidence through local cancellation. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(validated);\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\ttry {\n\t\t\t\tcontrol.check();\n\t\t\t\treturn await control.race(this.core.mutate(reference, /** Serialize stop validation and submission for this task. */ async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tconst found = await control.race(this.lookupInternal(reference));\n\t\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task to stop is unavailable.', { reason: 'unit-not-found' });\n\t\t\t\t\tif (found.snapshot.phase === 'completed') return { outcome: 'already-completed', reference, jobPath: null, completion: found.snapshot };\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\tconst jobPath = await control.race(this.core.transport.stop(reference.unitName));\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\tthis.core.diagnostics.emit('stop.accepted');\n\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\tconst completion = validated.wait ? await this.waitInternal(reference, control) : null;\n\t\t\t\t\treturn { outcome: 'accepted', reference, jobPath, completion };\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'stop', reference, stage);\n\t\t\t\tthis.core.diagnostics.emit('stop.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Refuse to clear live state, including pending jobs and incomplete cgroup cleanup. */\n\tprivate async assertReleasable(reference: types.TaskReference, pair: systemd.UnitPair): Promise<void> {\n\t\tif (!pair.task) return;\n\t\tconst state = await systemd.snapshot(reference, this.manager, pair);\n\t\tif (state.phase !== 'completed') throw new errors.TaskError('TASK_RUNNING', 'A task can be released only after confirmed cleanup.', { reason: 'task-not-completed', taskId: reference.id });\n\t}\n\n\t/** Return true only for an acknowledged reset; explicit concurrent absence is an idempotent no-op. */\n\tprivate async resetOwnFailed(name: string): Promise<boolean> {\n\t\ttry { await this.core.transport.resetFailed(name); return true; }\n\t\tcatch (error) { if (!clientCore.isAbsence(error)) throw error; return false; }\n\t}\n\n\t/** Remove retention only after both identities and task cleanup have been checked. */\n\t/** Observed overload kontroluje payload i guardian před retention cleanupem. */\n\trelease(value: observedTypes.ObservedTaskReference, options?: types.ReleaseOptions): Promise<types.ReleaseReceipt>;\n\trelease(value: types.TaskReference, options?: types.ReleaseOptions): Promise<types.ReleaseReceipt>;\n\t/** Směruje release podle identity bez vytváření paralelního cleanup enginu. */\n\tasync release(value: types.TaskReference | observedTypes.ObservedTaskReference, options: types.ReleaseOptions = {}): Promise<types.ReleaseReceipt> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.release(value as observedTypes.ObservedTaskReference, options);\n\t\tconst reference = validation.validateReference(value);\n\t\tconst validated = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(reference, /** Bound release observation without extending manager retention indefinitely. */ async () => {\n\t\t\tconst control = new waiting.WaitControl({ ...validated, timeoutMs: validated.timeoutMs ?? clientCore.defaultReleaseTimeoutMs });\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet acceptedCleanupMutations = 0;\n\t\t\ttry {\n\t\t\t\treturn await control.race(this.core.mutate(reference, /** Serialize ownership checks and retention removal for this task. */ async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tlet pair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tif (!pair.task && !pair.retention) return { released: true, alreadyReleased: true, collected: true };\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.task?.properties.ActiveState === 'failed') {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(reference.unitName))) {\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t}\n\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.retention?.properties.ActiveState === 'failed') {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(reference.retentionUnitName))) {\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t}\n\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.retention) {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait control.race(this.core.transport.stop(reference.retentionUnitName));\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (error) { if (!clientCore.isAbsence(error)) throw error; stage = previousStage; }\n\t\t\t\t\t}\n\t\t\t\t\tconst watch = this.core.hub.watch(reference.unitName);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\tconst generation = watch.version();\n\t\t\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\t\t\tif (!pair.retention || (systemd.managerTerminal(pair.retention) && pair.retention.properties.ActiveState !== 'failed')) {\n\t\t\t\t\t\t\t\tthis.core.diagnostics.emit('release.completed');\n\t\t\t\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\t\t\t\treturn { released: true, alreadyReleased: false, collected: !pair.task && !pair.retention };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally { watch.close(); }\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.releaseError(error, reference, stage, acceptedCleanupMutations);\n\t\t\t\tthis.core.diagnostics.emit('release.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Tear down local resources immediately, without waiting for task output EOF or process exit. */\n\tasync disconnect(): Promise<void> {\n\t\tawait this.core.disconnect();\n\t}\n}\n\n/** Otevře společný concrete klient po topology-specific preflightu. */\nasync function openClient(options: types.ConnectOptions, observed: boolean): Promise<SystemdTaskClient> {\n\tconst validated = validation.validateConnectOptions(options);\n\tconst sink = new diagnostics.Diagnostics(crypto.randomUUID(), validated.onDiagnostic);\n\ttry {\n\t\tif (observed) await observedSystemd.assertObservedAvailable();\n\t\telse await systemd.assertRetentionAvailable();\n\t\tconst adapter = await transport.DbusTransport.open(validated.requestTimeoutMs);\n\t\tconst client = new SystemdTaskClient(adapter, sink);\n\t\tsink.emit('connection.connected');\n\t\treturn client;\n\t} catch (error) {\n\t\tif (error instanceof errors.TaskError) sink.emit('connection.error', error.code);\n\t\tsink.dispose();\n\t\tthrow error;\n\t}\n}\n\n/** Connect explicitly to the local user manager; package import has no connection side effects. */\nexport async function connect(options: types.ConnectOptions = {}): Promise<types.TaskClient> {\n\treturn await openClient(options, false);\n}\n\n/** Připojí stejný runtime až po guardian a systemd prerequisites preflightu. */\nexport async function connectObserved(options: types.ConnectOptions = {}): Promise<observedTypes.ObservedTaskClient> {\n\treturn await openClient(options, true);\n}\n","import * as util from 'node:util';\nimport type * as types from './types';\n\n/** A recoverable API error with stable categories and redacted default formatting. */\nexport class TaskError extends Error {\n\t/** Stable category used by applications instead of parsing human-readable messages. */\n\treadonly code: types.ErrorCode;\n\t/** Safe delivery and identity metadata; never contains a command specification. */\n\treadonly details: types.ErrorDetails;\n\n\t/** Preserve the original cause for explicit access while keeping default output redacted. */\n\tconstructor(code: types.ErrorCode, message: string, details: types.ErrorDetails = {}, cause?: unknown) {\n\t\tsuper(message, cause === undefined ? undefined : { cause });\n\t\tthis.name = 'TaskError';\n\t\tthis.code = code;\n\t\tthis.details = Object.freeze({ ...details });\n\t}\n\n\t/** Serialization deliberately excludes raw causes, stack contents, and request payloads. */\n\ttoJSON(): {\n\t\t/** Stable error class name for serialized consumers. */\n\t\tname: string;\n\t\t/** Public recovery category. */\n\t\tcode: types.ErrorCode;\n\t\t/** Redacted explanation safe for default logs. */\n\t\tmessage: string;\n\t\t/** Safe delivery evidence without raw causes. */\n\t\tdetails: types.ErrorDetails;\n\t} {\n\t\treturn { name: this.name, code: this.code, message: this.message, details: this.details };\n\t}\n\n\t/** Console and util.inspect must not expand a transport cause containing request data. */\n\t[util.inspect.custom](): string {\n\t\treturn `${this.name} [${this.code}]: ${this.message}`;\n\t}\n}\n\n/** Extract an OS or transport category without copying its potentially sensitive message. */\nexport function errorCode(error: unknown): string | undefined {\n\tif (typeof error !== 'object' || error === null) return undefined;\n\tif ('code' in error && typeof error.code === 'string') return error.code;\n\treturn undefined;\n}\n\n/** Identify an explicit manager or bus error reply separately from local disconnection. */\nexport function dbusErrorName(error: unknown): string | undefined {\n\tif (typeof error !== 'object' || error === null) return undefined;\n\tif ('type' in error && typeof error.type === 'string') return error.type;\n\treturn undefined;\n}\n","import * as errors from './errors';\nimport type * as types from './types';\n\n/** A local deadline and abort scope that never cancels the underlying task or shared read. */\nexport class WaitControl {\n\t/** Internal cancellation combines the caller's abort with a local deadline. */\n\tprivate readonly controller = new AbortController();\n\t/** Local timer, absent for an explicitly unbounded wait. */\n\tprivate readonly timer: ReturnType<typeof setTimeout> | undefined;\n\t/** Caller signal whose listener must be removed at settlement. */\n\tprivate readonly external: AbortSignal | undefined;\n\t/** Captured listener identity allows deterministic cleanup. */\n\tprivate readonly onAbort: () => void;\n\n\t/** A timeout is an observation deadline, never a manager escalation timeout. */\n\tconstructor(options: types.WaitOptions) {\n\t\tthis.external = options.signal;\n\t\tthis.onAbort = /** Propagate caller cancellation into this local wait scope only. */ () => this.controller.abort(new errors.TaskError('WAIT_ABORTED', 'Local waiting was aborted.'));\n\t\tif (options.timeoutMs !== undefined) this.timer = setTimeout(/** Expire local observation without changing systemd execution timers. */ () => this.controller.abort(new errors.TaskError('WAIT_TIMEOUT', 'The local waiting deadline expired.')), options.timeoutMs);\n\t\tif (this.external?.aborted) this.onAbort();\n\t\telse this.external?.addEventListener('abort', this.onAbort, { once: true });\n\t}\n\n\t/** Refuse an already-cancelled operation before it can submit a mutation. */\n\tcheck(): void {\n\t\tif (this.controller.signal.aborted) throw this.controller.signal.reason;\n\t}\n\n\t/** Stop this caller's observation while leaving a shared request or server mutation intact. */\n\tasync race<T>(promise: Promise<T>): Promise<T> {\n\t\tif (this.controller.signal.aborted) {\n\t\t\tvoid promise.catch(/** Consume eventual settlement of work that outlives the cancelled caller. */ () => { /* The underlying shared read or mutation still owns its settlement. */ });\n\t\t\tthis.check();\n\t\t}\n\t\tconst signal = this.controller.signal;\n\t\tlet abort: (() => void) | undefined;\n\t\tconst cancelled = new Promise<never>(/** Bridge local cancellation into the current asynchronous observation. */ (_resolve, reject) => {\n\t\t\tabort = /** Reject with the original local cancellation category. */ () => reject(signal.reason);\n\t\t\tsignal.addEventListener('abort', abort, { once: true });\n\t\t});\n\t\ttry { return await Promise.race([promise, cancelled]); }\n\t\tfinally { if (abort) signal.removeEventListener('abort', abort); }\n\t}\n\n\t/** Remove every local timer and listener without touching a running task. */\n\tdispose(): void {\n\t\tclearTimeout(this.timer);\n\t\tthis.external?.removeEventListener('abort', this.onAbort);\n\t}\n}\n\n/** A subscription token closes the snapshot-to-signal race using a generation counter. */\nexport interface Watch {\n\t/** Current generation, sampled before reading a snapshot. */\n\tversion(): number;\n\t/** Resolve immediately when an event arrived during the preceding snapshot. */\n\tnext(version: number): Promise<void>;\n\t/** Detach this caller without affecting other observers. */\n\tclose(): void;\n}\n\n/** Internal shared watch state: one bounded reconciliation timer per observed task. */\ninterface WatchGroup {\n\t/** Monotonically increasing notification generation. */\n\tgeneration: number;\n\t/** Independent waiting callbacks sharing the same source events. */\n\treadonly callbacks: Set<() => void>;\n\t/** Number of live watch tokens, including callers currently reading. */\n\tusers: number;\n\t/** Periodic reconciliation covers missed or invalidated property notifications. */\n\treadonly timer: ReturnType<typeof setInterval>;\n}\n\n/** Share systemd notifications and low-frequency reconciliation across concurrent waiters. */\nexport class ObservationHub {\n\t/** Entries exist only while a caller is waiting on a unit. */\n\tprivate readonly groups = new Map<string, WatchGroup>();\n\n\t/** Wake one task, or every task after manager disconnection. */\n\tnotify(unitName?: string): void {\n\t\tfor (const [name, group] of this.groups) {\n\t\t\tif (unitName !== undefined && unitName !== name) continue;\n\t\t\tgroup.generation++;\n\t\t\tfor (const callback of [...group.callbacks]) callback();\n\t\t}\n\t}\n\n\t/** Subscribe before the first snapshot, then compare generations before sleeping. */\n\twatch(unitName: string): Watch {\n\t\tlet group = this.groups.get(unitName);\n\t\tif (!group) {\n\t\t\tgroup = { generation: 0, callbacks: new Set(), users: 0, timer: setInterval(/** Reconcile snapshots even if systemd notifications are missed. */ () => this.notify(unitName), 1000) };\n\t\t\tthis.groups.set(unitName, group);\n\t\t}\n\t\tconst state = group;\n\t\tstate.users++;\n\t\tlet closed = false;\n\t\tlet pending: (() => void) | undefined;\n\t\treturn {\n\t\t\t/** Capture notifications already observed by the shared source. */\n\t\t\tversion: () => state.generation,\n\t\t\t/** Retain only one callback per caller, never one callback per event. */\n\t\t\tnext: async version => {\n\t\t\t\tif (closed || version !== state.generation) return;\n\t\t\t\tawait new Promise<void>(/** Retain a single wake callback for this observer. */ resolve => {\n\t\t\t\t\tpending = /** Remove this wake callback before resolving the observer. */ () => {\n\t\t\t\t\t\tif (pending) state.callbacks.delete(pending);\n\t\t\t\t\t\tpending = undefined;\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\tstate.callbacks.add(pending);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** Cancel one subscription and remove the group's timer after its last user. */\n\t\t\tclose: () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tpending?.();\n\t\t\t\tstate.users--;\n\t\t\t\tif (state.users === 0) {\n\t\t\t\t\tclearInterval(state.timer);\n\t\t\t\t\tthis.groups.delete(unitName);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\t/** Wake pending callers and drop timers after the client is closed. */\n\tdispose(): void {\n\t\tthis.notify();\n\t\tfor (const group of this.groups.values()) clearInterval(group.timer);\n\t\tthis.groups.clear();\n\t}\n}\n","import * as diagnostics from './diagnostics';\nimport * as errors from './errors';\nimport * as waiting from './waiting';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** Fáze jedné mutation odděluje lokální validaci, neznámé doručení a potvrzené přijetí. */\nexport type MutationStage = 'before-submission' | 'submitted' | 'accepted';\n\n/** Lokální zdroj se při disconnectu odpojí bez změny manager-owned tasku. */\nexport interface LocalResource {\n\t/** Ukončí pouze lokální observation nebo jiný klientský handle. */\n\tdetach(): Promise<void>;\n}\n\n/** Výchozí celkový release budget zůstává nezávislý na per-request D-Bus timeoutu. */\nexport const defaultReleaseTimeoutMs = 5000;\n\n/** Doplní bezpečný task kontext a skutečný delivery outcome právě probíhající mutation. */\nexport function mutationError(error: unknown, operation: string, identity: types.TaskIdentity, stage: MutationStage): errors.TaskError {\n\tconst original = error instanceof errors.TaskError ? error : new errors.TaskError('RESULT_UNAVAILABLE', 'The task operation failed.', {}, error);\n\tconst localCancellation = original.code === 'WAIT_ABORTED' || original.code === 'WAIT_TIMEOUT';\n\tconst outcome = original.details.mutationOutcome ?? (stage === 'before-submission' ? 'not-submitted' : stage === 'accepted' ? 'accepted' : 'unknown');\n\tconst code = localCancellation && stage === 'submitted' ? 'UNKNOWN_MUTATION_OUTCOME' : original.code;\n\treturn new errors.TaskError(code, code === 'UNKNOWN_MUTATION_OUTCOME' ? 'The manager mutation outcome is unknown.' : original.message, { ...original.details, operation, taskId: identity.id, mutationOutcome: outcome }, original);\n}\n\n/** Zachová dříve potvrzené cleanup efekty i při chybě pozdějšího release kroku. */\nexport function releaseError(error: unknown, identity: types.TaskIdentity, stage: MutationStage, acceptedCleanupMutations: number): errors.TaskError {\n\tconst reported = mutationError(error, 'release', identity, stage);\n\tconst outcome = reported.details.mutationOutcome ?? 'not-submitted';\n\treturn new errors.TaskError(reported.code, reported.message, {\n\t\t...reported.details,\n\t\tmutationOutcome: acceptedCleanupMutations > 0 && outcome !== 'unknown' ? 'accepted' : outcome,\n\t\tacceptedCleanupMutations,\n\t}, reported);\n}\n\n/** Pouze explicitní manager absence je bezpečný idempotentní cleanup výsledek. */\nexport function isAbsence(error: unknown): boolean {\n\treturn error instanceof errors.TaskError && (error.details.reason === 'org.freedesktop.systemd1.NoSuchUnit' || error.details.reason === 'org.freedesktop.DBus.Error.UnknownObject');\n}\n\n/** Sdílené klientské vlastnictví transportu, read deduplikace, mutation front a observerů. */\nexport class ClientCore {\n\t/** Manager identity se po připojení nikdy tiše nezmění. */\n\treadonly manager: types.ManagerIdentity;\n\t/** Jediný D-Bus adapter používaný oběma topology codecy. */\n\treadonly transport: transport.Transport;\n\t/** Jediná redigovaná diagnostická pipeline spojení. */\n\treadonly diagnostics: diagnostics.Diagnostics;\n\t/** Sdílené systemd notifications a periodická reconciliation. */\n\treadonly hub = new waiting.ObservationHub();\n\t/** Současná čtení stejné topologie se sdílejí, settled hodnoty se necachují. */\n\tprivate readonly reads = new Map<string, Promise<readonly (transport.RawUnit | null)[]>>();\n\t/** Jedno lokální spojení nikdy neodešle stejný intent podruhé. */\n\tprivate readonly attempted = new Set<string>();\n\t/** Mutation stejné identity se řadí, různé tasky zůstávají nezávislé. */\n\tprivate readonly mutations = new Map<string, Promise<void>>();\n\t/** Živé output handles se při disconnectu odpojí před zavřením busu. */\n\tprivate readonly resources = new Set<LocalResource>();\n\t/** Transport listener patří přesně tomuto klientovi. */\n\tprivate readonly unsubscribe: () => void;\n\t/** Closed klient už nikdy neotevře nový transport ani observation. */\n\tprivate closed = false;\n\n\t/** Sváže oba topology codecy s jedním adaptérem a diagnostickým kontextem. */\n\tconstructor(adapter: transport.Transport, sink: diagnostics.Diagnostics) {\n\t\tthis.transport = adapter;\n\t\tthis.manager = adapter.identity;\n\t\tthis.diagnostics = sink;\n\t\tthis.unsubscribe = adapter.onChange(/** Směruje všechny relevantní unit změny do společného hubu. */ unitName => this.hub.notify(unitName));\n\t}\n\n\t/** Odmítne operaci před jakýmkoliv manager I/O, pokud už klient skončil. */\n\tassertOpen(): void {\n\t\tif (this.closed) throw new errors.TaskError('DISCONNECTED', 'The task client is disconnected.');\n\t\tthis.transport.assertOpen();\n\t}\n\n\t/** Odmítne lokální retry před manager I/O, sockety nebo otevřením aplikačních souborů. */\n\tassertUnattempted(identity: types.TaskIdentity): void {\n\t\tif (this.attempted.has(identity.id)) throw new errors.TaskError('START_REJECTED', 'This client has already submitted the intention.', { reason: 'intent-already-submitted', mutationOutcome: 'not-submitted' });\n\t}\n\n\t/** Zaregistruje skutečný submission až po úspěšném dokončení lokální přípravy. */\n\tmarkAttempt(identity: types.TaskIdentity): void {\n\t\tthis.assertUnattempted(identity);\n\t\tthis.attempted.add(identity.id);\n\t}\n\n\t/** Serializuje mutation jedné identity bez otrávení fronty předchozí chybou. */\n\tasync mutate<T>(identity: types.TaskIdentity, action: () => Promise<T>): Promise<T> {\n\t\tconst previous = this.mutations.get(identity.id) ?? Promise.resolve();\n\t\tconst result = previous.then(action);\n\t\tconst settled = result.then(/** Úspěch nesmí zablokovat další mutation. */ () => {}, /** Chyba nesmí zablokovat další mutation. */ () => {});\n\t\tthis.mutations.set(identity.id, settled);\n\t\ttry { return await result; }\n\t\tfinally { if (this.mutations.get(identity.id) === settled) this.mutations.delete(identity.id); }\n\t}\n\n\t/** Přečte celý topology snapshot souběžně a sdílí pouze právě probíhající request. */\n\tasync readUnits(identity: types.TaskIdentity, names: readonly string[]): Promise<readonly (transport.RawUnit | null)[]> {\n\t\tthis.assertOpen();\n\t\tconst key = `${identity.id}\\0${names.join('\\0')}`;\n\t\tconst existing = this.reads.get(key);\n\t\tif (existing) return await existing;\n\t\tconst read = Promise.all(names.map(/** Každé jméno se čte přes stejný bound manager. */ async name => await this.transport.readUnit(name)));\n\t\tthis.reads.set(key, read);\n\t\ttry { return await read; }\n\t\tfinally { if (this.reads.get(key) === read) this.reads.delete(key); }\n\t}\n\n\t/** Přidá lokální resource a vrátí idempotentní unregister pro jeho terminal settlement. */\n\tregister(resource: LocalResource): () => void {\n\t\tthis.assertOpen();\n\t\tthis.resources.add(resource);\n\t\treturn /** Uvolní pouze bookkeeping; resource už vlastní svůj terminal cleanup. */ () => { this.resources.delete(resource); };\n\t}\n\n\t/** Ukončí lokální handles před bus socketem, aniž by odeslal jediný StopUnit. */\n\tasync disconnect(): Promise<void> {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tconst resources = [...this.resources];\n\t\tthis.resources.clear();\n\t\tawait Promise.all(resources.map(/** Jedna chybná observation nesmí zabránit cleanupu ostatních. */ async resource => { try { await resource.detach(); } catch { /* Lokální detach je best effort a task pokračuje. */ } }));\n\t\tthis.transport.close();\n\t\tthis.unsubscribe();\n\t\tthis.hub.dispose();\n\t\tthis.reads.clear();\n\t\tthis.attempted.clear();\n\t\tthis.diagnostics.emit('connection.disconnected');\n\t\tthis.diagnostics.dispose();\n\t}\n}\n","import * as asyncHooks from 'node:async_hooks';\nimport type * as types from './types';\n\n/** One context-aware sink per client, isolated across concurrent asynchronous task flows. */\nexport class Diagnostics {\n\t/** Each operation inherits its own immutable identity context. */\n\tprivate readonly storage = new asyncHooks.AsyncLocalStorage<types.DiagnosticEvent['context']>();\n\t/** Connection context applies to events outside a task operation. */\n\tprivate readonly base: types.DiagnosticEvent['context'];\n\t/** The application controls delivery; the library never adds console output. */\n\tprivate readonly sink: types.ConnectOptions['onDiagnostic'];\n\t/** Pending asynchronous scopes retain correlation until their terminal callbacks finish. */\n\tprivate activeRuns = 0;\n\t/** Defer AsyncLocalStorage teardown until disconnected operations have reported their errors. */\n\tprivate disposeRequested = false;\n\n\t/** Bind all future events to the same connection scope and application sink. */\n\tconstructor(connectionId: string, sink?: types.ConnectOptions['onDiagnostic']) {\n\t\tthis.base = Object.freeze({ connection: Object.freeze({ id: connectionId }) });\n\t\tthis.sink = sink;\n\t}\n\n\t/** Establish task context once at the public operation boundary. */\n\tasync run<T>(identity: types.TaskIdentity, action: () => Promise<T>): Promise<T> {\n\t\tconst context = Object.freeze({ ...this.base, task: Object.freeze({ id: identity.id, unitName: identity.unitName }) });\n\t\tthis.activeRuns++;\n\t\ttry { return await this.storage.run(context, action); }\n\t\tfinally {\n\t\t\tthis.activeRuns--;\n\t\t\tif (this.disposeRequested && this.activeRuns === 0) this.storage.disable();\n\t\t}\n\t}\n\n\t/** Emit only predefined metadata, isolating application sink errors from task outcomes. */\n\temit(event: string, code?: types.ErrorCode): void {\n\t\tif (!this.sink) return;\n\t\tconst entry = Object.freeze({ event, context: this.storage.getStore() ?? this.base, ...(code === undefined ? {} : { code }) });\n\t\ttry {\n\t\t\tvoid Promise.resolve(this.sink(entry)).catch(/** Consume asynchronous observer failures without delaying task settlement. */ () => {});\n\t\t} catch { /* Observability must not change a mutation's outcome. */ }\n\t}\n\n\t/** Stop tracking local scopes after the client has disconnected. */\n\tdispose(): void {\n\t\tthis.disposeRequested = true;\n\t\tif (this.activeRuns === 0) this.storage.disable();\n\t}\n}\n","import * as fs from 'node:fs';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** Prepared descriptors stay alive until the transport settles the creation request. */\nexport interface OpenIO {\n\t/** Null maps to systemd's explicit null input or output mode. */\n\treadonly descriptors: Readonly<{\n\t\t/** Input source descriptor, or manager null mode. */\n\t\tstdin: number | null;\n\t\t/** Binary output descriptor, or manager null mode. */\n\t\tstdout: number | null;\n\t\t/** Binary error descriptor, or manager null mode. */\n\t\tstderr: number | null;\n\t}>;\n\t/** Idempotently close owned descriptors only; borrowed descriptors remain untouched. */\n\tclose(): void;\n}\n\n/** Compare actual opened objects, including aliases and hard links, without path guessing. */\nfunction fileIdentity(fd: number): string {\n\tconst stat = fs.fstatSync(fd, { bigint: true });\n\treturn `${stat.dev}:${stat.ino}`;\n}\n\n/** Open all files before truncation, coalescing shared output destinations into one offset. */\nexport function openIO(io: types.TaskIO): OpenIO {\n\tconst owned = new Set<number>();\n\tconst outputs = new Map<string, {\n\t\t/** First owned opening of this output inode. */\n\t\tfd: number;\n\t\t/** Aliases must agree with this original opening policy. */\n\t\tmode: 'append' | 'truncate';\n\t}>();\n\tlet inputIdentity: string | null = null;\n\n\t/** Remove ownership before closing so descriptor-number reuse cannot cause a second close. */\n\tfunction close(): void {\n\t\tfor (const fd of owned) {\n\t\t\towned.delete(fd);\n\t\t\ttry { fs.closeSync(fd); } catch { /* Never retry close: the descriptor number may already have been reused. */ }\n\t\t}\n\t}\n\n\t/** Open or borrow one channel without yet truncating any destination. */\n\tfunction open(channel: types.TaskInput | types.TaskOutput, output: boolean): number | null {\n\t\tif (channel.type === 'null') return null;\n\t\tif (channel.type === 'fd') {\n\t\t\tfs.fstatSync(channel.fd);\n\t\t\tif (!output) inputIdentity = fileIdentity(channel.fd);\n\t\t\treturn channel.fd;\n\t\t}\n\t\tconst mode = 'mode' in channel ? channel.mode : null;\n\t\tconst flags = fs.constants.O_NONBLOCK | (output ? fs.constants.O_WRONLY | fs.constants.O_CREAT | (mode === 'append' ? fs.constants.O_APPEND : 0) : fs.constants.O_RDONLY);\n\t\tconst fd = fs.openSync(channel.path, flags, 0o666);\n\t\towned.add(fd);\n\t\tif (!fs.fstatSync(fd).isFile()) throw new errors.TaskError('INVALID_INPUT', 'File I/O requires a regular file; use a borrowed descriptor for other objects.', { mutationOutcome: 'not-submitted', reason: 'non-regular-file' });\n\t\tconst identity = fileIdentity(fd);\n\t\tif (!output) {\n\t\t\tinputIdentity = identity;\n\t\t\treturn fd;\n\t\t}\n\t\tif (mode === null) throw new errors.TaskError('INVALID_INPUT', 'Output requires an explicit file mode.', { mutationOutcome: 'not-submitted', reason: 'output-mode' });\n\t\tconst previous = outputs.get(identity);\n\t\tif (previous) {\n\t\t\tif (previous.mode !== mode) throw new errors.TaskError('INVALID_INPUT', 'Shared output destinations have conflicting modes.', { mutationOutcome: 'not-submitted', reason: 'conflicting-output-modes' });\n\t\t\towned.delete(fd);\n\t\t\tfs.closeSync(fd);\n\t\t\treturn previous.fd;\n\t\t}\n\t\toutputs.set(identity, { fd, mode });\n\t\treturn fd;\n\t}\n\n\ttry {\n\t\t// Validate borrowed numbers before an owned open can accidentally reuse a closed number.\n\t\tfor (const channel of [io.stdin, io.stdout, io.stderr]) if (channel.type === 'fd') fs.fstatSync(channel.fd);\n\t\tconst stdin = open(io.stdin, false);\n\t\tconst stdout = open(io.stdout, true);\n\t\tconst stderr = open(io.stderr, true);\n\t\tfor (const [identity, output] of outputs) {\n\t\t\tif (output.mode === 'truncate' && identity === inputIdentity) throw new errors.TaskError('INVALID_INPUT', 'Truncating the input file is not supported.', { mutationOutcome: 'not-submitted', reason: 'input-output-alias' });\n\t\t}\n\t\tfor (const output of outputs.values()) if (output.mode === 'truncate') fs.ftruncateSync(output.fd, 0);\n\t\treturn { descriptors: Object.freeze({ stdin, stdout, stderr }), close };\n\t} catch (error) {\n\t\tclose();\n\t\tif (error instanceof errors.TaskError) throw error;\n\t\tconst code = errors.errorCode(error);\n\t\tthrow new errors.TaskError(code === 'EACCES' || code === 'EPERM' ? 'PERMISSION_DENIED' : 'INVALID_INPUT', 'Standard I/O could not be opened.', { mutationOutcome: 'not-submitted', reason: 'io-open-failed' }, error);\n\t}\n}\n","/** Čtyřbytový magic odděluje guardian stream od náhodného nebo staršího protokolu. */\nexport const magic = Buffer.from('SDTO', 'ascii');\n/** První veřejně implementovaná verze interního guardian protokolu. */\nexport const version = 1;\n/** Fixní hlavička obsahuje magic, verzi, kind a uint32be délku. */\nexport const headerBytes = 10;\n/** Jeden payload frame je bounded nezávisle na Node stream high-water marku. */\nexport const maximumPayloadBytes = 64 * 1024;\n\n/** Wire hodnoty jsou stabilní a nesmějí záviset na pořadí TypeScript enumu. */\nexport const kind = Object.freeze({ ready: 1, stdout: 2, stderr: 3, complete: 4 } as const);\n\n/** Zakóduje jeden již bounded frame pro guardian write frontu. */\nexport function encode(frameKind: number, payload: Uint8Array = new Uint8Array()): Buffer {\n\tif (!Object.values(kind).includes(frameKind as 1 | 2 | 3 | 4) || payload.byteLength > maximumPayloadBytes) throw new Error('Invalid observed guardian frame.');\n\tconst frame = Buffer.allocUnsafe(headerBytes + payload.byteLength);\n\tmagic.copy(frame, 0);\n\tframe[4] = version;\n\tframe[5] = frameKind;\n\tframe.writeUInt32BE(payload.byteLength, 6);\n\tframe.set(payload, headerBytes);\n\treturn frame;\n}\n","import * as errors from './errors';\nimport * as framing from './observed-framing';\nimport type * as clientCore from './client-core';\nimport type * as observedTypes from './observed-types';\nimport type * as fdx from 'usocket';\n\n/** Adoptovaný socket používá bounded buffering i při pomalém async callbacku. */\nconst receiveBudgetBytes = 256 * 1024;\n\n/** Minimální native kontrakt odděluje resource algoritmus od lazy načtení addonu. */\nexport interface SocketRuntime {\n\t/** Vytvoří jeden pár explicitně vlastněných Unix stream endpointů. */\n\treadonly socketPair: typeof fdx.socketPair;\n\t/** Převezme jeden endpoint do bounded asynchronního socketu. */\n\treadonly adoptSocket: typeof fdx.adoptSocket;\n}\n\n/** Endpointy, které musí zůstat otevřené do settlementu StartTransientUnit. */\nexport interface PreparedObservedSockets {\n\t/** Raw čísla pouze pro interní D-Bus property mapper, nikdy pro veřejného callera. */\n\treadonly descriptors: {\n\t\t/** Payload stdout endpoint. */\n\t\treadonly taskStdout: number;\n\t\t/** Guardian stdout endpoint. */\n\t\treadonly guardianStdout: number;\n\t\t/** Payload stderr endpoint. */\n\t\treadonly taskStderr: number;\n\t\t/** Guardian stderr endpoint. */\n\t\treadonly guardianStderr: number;\n\t\t/** Guardian framed-output endpoint. */\n\t\treadonly guardianObserver: number;\n\t};\n\t/** Lokální observation nad adoptovaným peer endpointem. */\n\treadonly observation: OutputObservation;\n\t/** Zavře manager-submission wrappers až po definitivním settlementu D-Bus requestu. */\n\tcloseSubmitted(): void;\n}\n\n/** Přeloží native/protocol chybu do redigované stabilní veřejné kategorie. */\nfunction observationError(error: unknown, reason = 'observer-transport'): errors.TaskError {\n\tif (error instanceof errors.TaskError) return error;\n\tconst code = errors.errorCode(error);\n\tif (code === 'ERR_FDX_PLATFORM' || code === 'ERR_FDX_ABI' || code === 'ERR_FDX_BINARY_MISSING') {\n\t\treturn new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The installed Unix socket transport does not support observed tasks.', { reason: code }, error);\n\t}\n\treturn new errors.TaskError('OBSERVATION_FAILED', 'The observed output connection failed.', { reason }, error);\n}\n\n/** Jediný dekódovaný frame; payload je nová stabilní kopie. */\ninterface Frame {\n\t/** Číselný wire kind ověřený vůči známé verzi. */\n\treadonly kind: 1 | 2 | 3 | 4;\n\t/** Přesný payload bez header storage. */\n\treadonly payload: Buffer;\n}\n\n/** Lokální observation state machine bez reconnectu, replay nebo manager mutací. */\nexport class OutputObservation implements observedTypes.ObservedTaskObservation, clientCore.LocalResource {\n\t/** Veřejný terminal promise zůstává stejný pro všechny callery. */\n\treadonly completion: Promise<{ readonly outcome: 'complete' | 'detached' }>;\n\t/** Settluje public completion nezávisle na případně visícím application callbacku. */\n\tprivate completionResolve!: (outcome: { readonly outcome: 'complete' | 'detached' }) => void;\n\t/** Propaguje jedinou redigovanou observation chybu do public completion. */\n\tprivate completionReject!: (error: errors.TaskError) => void;\n\t/** Package-owned bounded socket po úspěšné adopci. */\n\tprivate readonly socket: fdx.Socket;\n\t/** Callback se volá sekvenčně a jeho promise je skutečný backpressure. */\n\tprivate readonly onOutput: observedTypes.ObservedStartOptions['onOutput'];\n\t/** Odstraní handle ze společného client bookkeeping po libovolném settlementu. */\n\tprivate readonly onTerminal: () => void;\n\t/** Start čeká na jediný validní ready frame odděleně od celého output lifecycle. */\n\tprivate readonly ready: Promise<void>;\n\t/** Settluje readiness právě jednou. */\n\tprivate readyResolve!: () => void;\n\t/** Propaguje pre-ready protocol nebo detach chybu do startObserved. */\n\tprivate readyReject!: (error: unknown) => void;\n\t/** Brání dvojímu settlementu readiness promise. */\n\tprivate readySettled = false;\n\t/** Explicitní public detach se hlásí jako úspěšný lokální outcome. */\n\tprivate detached = false;\n\t/** Interní start/protocol chyba má přednost před destroy error z native socketu. */\n\tprivate forcedFailure: errors.TaskError | undefined;\n\t/** Terminal observation ignoruje pozdější detach nebo abort. */\n\tprivate terminal = false;\n\n\t/** Spustí pull pump okamžitě, aby guardian readiness nemohla uváznout na bufferu. */\n\tconstructor(socket: fdx.Socket, onOutput: observedTypes.ObservedStartOptions['onOutput'], onTerminal: () => void) {\n\t\tthis.socket = socket;\n\t\tthis.onOutput = onOutput;\n\t\tthis.onTerminal = onTerminal;\n\t\tthis.ready = new Promise<void>(/** Uchová jednorázové readiness settlement funkce. */ (resolve, reject) => { this.readyResolve = resolve; this.readyReject = reject; });\n\t\tvoid this.ready.catch(/** Interní readiness může selhat dřív, než start boundary připojí waiter. */ () => {});\n\t\tthis.completion = new Promise(/** Lokální detach nesmí čekat na settlement cizího callback promise. */ (resolve, reject) => { this.completionResolve = resolve; this.completionReject = reject; });\n\t\tvoid this.completion.catch(/** Caller smí completion připojit později bez unhandled-rejection závodu. */ () => {});\n\t\tvoid this.pump();\n\t}\n\n\t/** Přečte exact frame a odmítne neznámou verzi, ancillary FD i oversized payload. */\n\tprivate async readFrame(): Promise<Frame | null> {\n\t\tconst header = await this.socket.read({ bytes: framing.headerBytes, fdCount: 0 });\n\t\tif (header === null) return null;\n\t\tif (this.socket.stats.bufferedReceiveFds !== 0 || !header.data.subarray(0, 4).equals(framing.magic)\n\t\t\t|| header.data[4] !== framing.version) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent an invalid protocol header.', { reason: 'guardian-frame-header' });\n\t\tconst frameKind = header.data[5];\n\t\tif (!Object.values(framing.kind).includes(frameKind as 1 | 2 | 3 | 4)) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent an unknown frame kind.', { reason: 'guardian-frame-kind' });\n\t\tconst length = header.data.readUInt32BE(6);\n\t\tif (length > framing.maximumPayloadBytes) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian frame exceeds the protocol limit.', { reason: 'guardian-frame-limit' });\n\t\tconst payload = length === 0 ? Buffer.alloc(0) : (await this.socket.read({ bytes: length, fdCount: 0 }))?.data;\n\t\tif (!payload || this.socket.stats.bufferedReceiveFds !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian stream ended inside a frame.', { reason: 'guardian-frame-truncated' });\n\t\treturn Object.freeze({ kind: frameKind as 1 | 2 | 3 | 4, payload: Buffer.from(payload) });\n\t}\n\n\t/** Settluje readiness jen jednou a zachová původní chybu pro start boundary. */\n\tprivate settleReady(error?: errors.TaskError): void {\n\t\tif (this.readySettled) return;\n\t\tthis.readySettled = true;\n\t\tif (error) this.readyReject(error);\n\t\telse this.readyResolve();\n\t}\n\n\t/** Settluje public observation a client bookkeeping právě jednou. */\n\tprivate settleCompletion(outcome: { readonly outcome: 'complete' | 'detached' } | undefined, error?: errors.TaskError): void {\n\t\tif (this.terminal) return;\n\t\tthis.terminal = true;\n\t\tif (error) this.completionReject(error);\n\t\telse this.completionResolve(outcome!);\n\t\ttry { this.onTerminal(); } catch { /* Interní bookkeeping nesmí přepsat observation outcome. */ }\n\t}\n\n\t/** Vynutí ready→data*→complete→EOF pořadí a sekvenční callback backpressure. */\n\tprivate async pump(): Promise<void> {\n\t\ttry {\n\t\t\tconst ready = await this.readFrame();\n\t\t\tif (ready === null || ready.kind !== framing.kind.ready || ready.payload.byteLength !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian did not begin with an empty ready frame.', { reason: 'guardian-ready-order' });\n\t\t\tthis.settleReady();\n\t\t\tfor (;;) {\n\t\t\t\tconst frame = await this.readFrame();\n\t\t\t\tif (frame === null) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian ended before the complete frame.', { reason: 'guardian-unexpected-eof' });\n\t\t\t\tif (frame.kind === framing.kind.ready) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian repeated its ready frame.', { reason: 'guardian-frame-order' });\n\t\t\t\tif (frame.kind === framing.kind.complete) {\n\t\t\t\t\tif (frame.payload.byteLength !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian complete frame carried data.', { reason: 'guardian-frame-order' });\n\t\t\t\t\tconst trailing = await this.socket.read({ bytes: 1, fdCount: 0 });\n\t\t\t\t\tif (trailing !== null || this.socket.stats.bufferedReceiveFds !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent trailing protocol data.', { reason: 'guardian-trailing-data' });\n\t\t\t\t\tthis.socket.destroy();\n\t\t\t\t\tthis.settleCompletion(Object.freeze({ outcome: 'complete' }));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ((frame.kind !== framing.kind.stdout && frame.kind !== framing.kind.stderr) || frame.payload.byteLength === 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent an invalid output frame.', { reason: 'guardian-frame-order' });\n\t\t\t\ttry {\n\t\t\t\t\tawait this.onOutput(Object.freeze({ stream: frame.kind === framing.kind.stdout ? 'stdout' : 'stderr', data: Buffer.from(frame.payload) }));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new errors.TaskError('OBSERVATION_FAILED', 'The observed output callback failed.', { reason: 'output-callback' }, error);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (this.detached && !this.forcedFailure) return;\n\t\t\tconst reported = this.forcedFailure ?? observationError(error);\n\t\t\tthis.settleReady(reported);\n\t\t\tthis.socket.destroy();\n\t\t\tthis.settleCompletion(undefined, reported);\n\t\t}\n\t}\n\n\t/** Čeká na readiness v pevném budgetu a timeout převádí na terminal observation failure. */\n\tasync waitReady(timeoutMs: number): Promise<void> {\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst timeout = new Promise<never>(/** Readiness timeout není task runtime timeout ani stop request. */ (_resolve, reject) => {\n\t\t\ttimer = setTimeout(/** Odpojí jen lokální peer; přijatý guardian přejde do drain režimu. */ () => reject(new errors.TaskError('OBSERVATION_FAILED', 'The guardian readiness deadline expired.', { reason: 'guardian-readiness-timeout' })), timeoutMs);\n\t\t});\n\t\ttry { await Promise.race([this.ready, timeout]); }\n\t\tcatch (error) {\n\t\t\tconst reported = observationError(error, 'guardian-readiness');\n\t\t\tawait this.abort(reported);\n\t\t\tthrow reported;\n\t\t} finally { clearTimeout(timer); }\n\t}\n\n\t/** Interní start chyba ukončí observation jako failure, nikoliv user-requested detach. */\n\tasync abort(error: errors.TaskError): Promise<void> {\n\t\tif (this.terminal) return;\n\t\tthis.forcedFailure = error;\n\t\tthis.settleReady(error);\n\t\tthis.socket.destroy();\n\t\tthis.settleCompletion(undefined, error);\n\t}\n\n\t/** Explicitní detach zavře lokální socket bez čekání na případně visící application callback. */\n\tasync detach(): Promise<void> {\n\t\tif (this.terminal) return;\n\t\tthis.detached = true;\n\t\tthis.settleReady(new errors.TaskError('OBSERVATION_FAILED', 'The output observation detached before guardian readiness.', { reason: 'detached-before-ready' }));\n\t\tthis.socket.destroy();\n\t\tthis.settleCompletion(Object.freeze({ outcome: 'detached' }));\n\t}\n}\n\n/** Načte native socket runtime až při skutečném startu, nikoliv při importu veřejné fasády. */\nasync function loadFdx(): Promise<typeof import('usocket')> {\n\treturn await import('usocket');\n}\n\n/** Připraví socket topology a každý získaný pár okamžitě zahrne do rollback evidence. */\nexport function prepareSocketsWithRuntime(socketFdx: SocketRuntime, options: observedTypes.ObservedStartOptions, onTerminal: () => void): PreparedObservedSockets {\n\tconst owned: fdx.OwnedDescriptor[] = [];\n\tlet adopted: fdx.Socket | undefined;\n\ttry {\n\t\tconst stdout = socketFdx.socketPair();\n\t\towned.push(...stdout);\n\t\tconst stderr = socketFdx.socketPair();\n\t\towned.push(...stderr);\n\t\tconst observer = socketFdx.socketPair();\n\t\towned.push(...observer);\n\t\tadopted = socketFdx.adoptSocket({ descriptor: observer[0], limits: { receiveBytes: receiveBudgetBytes, receiveFds: 1, readOperations: 2 } });\n\t\tconst observation = new OutputObservation(adopted, options.onOutput, onTerminal);\n\t\tlet closed = false;\n\t\treturn Object.freeze({\n\t\t\tdescriptors: Object.freeze({\n\t\t\t\ttaskStdout: stdout[0].fd, guardianStdout: stdout[1].fd,\n\t\t\t\ttaskStderr: stderr[0].fd, guardianStderr: stderr[1].fd,\n\t\t\t\tguardianObserver: observer[1].fd,\n\t\t\t}),\n\t\t\tobservation,\n\t\t\tcloseSubmitted: () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tfor (const descriptor of owned) descriptor.close();\n\t\t\t},\n\t\t});\n\t} catch (error) {\n\t\tadopted?.destroy();\n\t\tfor (const descriptor of owned) descriptor.close();\n\t\tthrow observationError(error, 'socket-setup');\n\t}\n}\n\n/** Vytvoří sockety až po lazy načtení přesně jedné canonical native dependency instance. */\nexport async function prepareSockets(options: observedTypes.ObservedStartOptions, onTerminal: () => void): Promise<PreparedObservedSockets> {\n\treturn prepareSocketsWithRuntime(await loadFdx(), options, onTerminal);\n}\n\n/** Ověří strict start options dřív, než vznikne jediný socket nebo D-Bus efekt. */\nexport function validateStartOptions(value: unknown): observedTypes.ObservedStartOptions {\n\tif (typeof value !== 'object' || value === null || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype) throw new errors.TaskError('INVALID_INPUT', 'The observed start options are invalid.', { reason: 'observed-start-options', mutationOutcome: 'not-submitted' });\n\tconst source = value as Record<string, unknown>;\n\tif (Object.keys(source).length !== 1 || typeof source.onOutput !== 'function' || Object.getOwnPropertySymbols(source).length !== 0) throw new errors.TaskError('INVALID_INPUT', 'The observed start options are invalid.', { reason: 'observed-start-options', mutationOutcome: 'not-submitted' });\n\treturn Object.freeze({ onOutput: source.onOutput as observedTypes.ObservedStartOptions['onOutput'] });\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport type * as observedTypes from './observed-types';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** Build banner nastavuje fyzický dist adresář; source-condition testy používají projektový fallback. */\ndeclare const __systemdTasksRuntimeDirectory: string;\n\n/** Jedno konzistentní čtení všech tří rolí observed topologie. */\nexport interface ObservedUnitSet {\n\t/** Uživatelský payload, nebo explicitní absence. */\n\treadonly task: transport.RawUnit | null;\n\t/** Bezprocesní retention záznam, nebo explicitní absence. */\n\treadonly retention: transport.RawUnit | null;\n\t/** Output guardian, nebo explicitní absence. */\n\treadonly guardian: transport.RawUnit | null;\n}\n\n/** Package-owned socket endpointy předané manageru v jediné start transakci. */\nexport interface ObservedDescriptors {\n\t/** Write endpoint payload stdout. */\n\treadonly taskStdout: number;\n\t/** Read endpoint guardian stdout vstupu. */\n\treadonly guardianStdout: number;\n\t/** Write endpoint payload stderr. */\n\treadonly taskStderr: number;\n\t/** Read endpoint guardian stderr vstupu. */\n\treadonly guardianStderr: number;\n\t/** Guardian endpoint jednosměrného framed spojení ke klientovi. */\n\treadonly guardianObserver: number;\n}\n\n/** Všechny properties atomické tříjednotkové transakce. */\nexport interface ObservedCreationProperties {\n\t/** Payload execution a jeho dependency policy. */\n\treadonly task: readonly transport.Property[];\n\t/** Retention záznam držící výsledek po skončení procesů. */\n\treadonly retention: readonly transport.Property[];\n\t/** Notify guardian vlastnící drain a framing. */\n\treadonly guardian: readonly transport.Property[];\n}\n\n/** Readiness je interně bounded bez dalšího veřejného timeout knobu. */\nexport const guardianReadinessTimeoutMs = 5000;\n\n/** Najde přibalený guardian stejně z ESM, CommonJS i source-condition testů. */\nexport function guardianPath(): string {\n\tconst directory = typeof __systemdTasksRuntimeDirectory === 'string' ? __systemdTasksRuntimeDirectory : path.resolve(process.cwd(), 'src');\n\treturn path.basename(directory) === 'src' ? path.resolve(directory, '..', 'dist', 'guardian.mjs') : path.join(directory, 'guardian.mjs');\n}\n\n/** Ověří všechny interní executable před otevřením observed spojení. */\nexport async function assertObservedAvailable(): Promise<void> {\n\tawait systemd.assertRetentionAvailable();\n\tfor (const executable of [process.execPath, '/usr/bin/systemd-notify', '/usr/bin/systemctl']) {\n\t\ttry {\n\t\t\tconst stat = await fs.stat(executable);\n\t\t\tif (!stat.isFile()) throw new Error('Internal executable is not a regular file.');\n\t\t\tawait fs.access(executable, fs.constants.X_OK);\n\t\t} catch (error) {\n\t\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Observed tasks require their internal executables.', { reason: 'observed-executable-unavailable' }, error);\n\t\t}\n\t}\n\ttry {\n\t\tconst stat = await fs.stat(guardianPath());\n\t\tif (!stat.isFile()) throw new Error('Packaged guardian is not a regular file.');\n\t\tawait fs.access(guardianPath(), fs.constants.R_OK);\n\t} catch (error) {\n\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The packaged observed-task guardian is unavailable.', { reason: 'guardian-unavailable' }, error);\n\t}\n}\n\n/** Přeloží validovaný intent a socket endpointy do jedné manager transakce. */\nexport function creationProperties(intent: observedTypes.ObservedTaskIntent, descriptors: ObservedDescriptors, managerEnvironment: readonly string[]): ObservedCreationProperties {\n\tconst spec = intent.spec;\n\tconst task = [\n\t\tsystemd.property('Description', 's', observedValidation.marker(intent, 'task')),\n\t\tsystemd.property('Type', 's', 'exec'), systemd.property('ExitType', 's', 'main'),\n\t\tsystemd.property('Restart', 's', 'no'), systemd.property('RemainAfterExit', 'b', false),\n\t\tsystemd.property('KillMode', 's', 'control-group'), systemd.property('KillSignal', 'i', 15),\n\t\tsystemd.property('FinalKillSignal', 'i', 9), systemd.property('SendSIGKILL', 'b', true),\n\t\tsystemd.property('TimeoutStopUSec', 't', BigInt(spec.stopGraceMs) * 1000n),\n\t\tsystemd.property('TimeoutStopFailureMode', 's', 'kill'),\n\t\tsystemd.property('RuntimeMaxUSec', 't', spec.runtimeLimitMs === null ? systemd.infinityUsec : BigInt(spec.runtimeLimitMs) * 1000n),\n\t\tsystemd.property('WorkingDirectory', 's', spec.cwd),\n\t\tsystemd.property('Environment', 'as', Object.entries(spec.env).map(/** Zachová explicitní byte-for-byte assignment hodnoty. */ ([name, value]) => `${name}=${value}`)),\n\t\tsystemd.property('UnsetEnvironment', 'as', systemd.unsetEnvironment(managerEnvironment, spec.env)),\n\t\tsystemd.property('ExecStartEx', 'a(sasas)', [[spec.executable, [spec.executable, ...spec.argv], ['no-env-expand']]]),\n\t\tsystemd.property('Requires', 'as', [intent.retentionUnitName]),\n\t\tsystemd.property('BindsTo', 'as', [intent.guardianUnitName]),\n\t\tsystemd.property('PropagatesStopTo', 'as', [intent.guardianUnitName]),\n\t\tsystemd.property('After', 'as', [intent.retentionUnitName, intent.guardianUnitName]),\n\t\tsystemd.property('StandardOutputFileDescriptor', 'h', descriptors.taskStdout),\n\t\tsystemd.property('StandardErrorFileDescriptor', 'h', descriptors.taskStderr),\n\t];\n\tconst input = observedValidation.stdinBytes(intent);\n\tif (input === null) task.push(systemd.property('StandardInput', 's', 'null'));\n\telse {\n\t\ttask.push(systemd.property('StandardInput', 's', 'data'));\n\t\ttask.push(systemd.property('StandardInputData', 'ay', input));\n\t}\n\tfor (const resource of spec.systemdProperties ?? []) task.push(systemd.property(resource.name, resource.signature, BigInt(resource.value)));\n\tconst guardian = [\n\t\tsystemd.property('Description', 's', observedValidation.marker(intent, 'guardian')),\n\t\tsystemd.property('Type', 's', 'notify'), systemd.property('NotifyAccess', 's', 'all'),\n\t\tsystemd.property('Restart', 's', 'no'), systemd.property('RemainAfterExit', 'b', false),\n\t\tsystemd.property('KillMode', 's', 'control-group'), systemd.property('KillSignal', 'i', 15),\n\t\tsystemd.property('FinalKillSignal', 'i', 9), systemd.property('SendSIGKILL', 'b', true),\n\t\tsystemd.property('TimeoutStartUSec', 't', BigInt(guardianReadinessTimeoutMs) * 1000n),\n\t\tsystemd.property('TimeoutStopUSec', 't', systemd.infinityUsec),\n\t\tsystemd.property('WorkingDirectory', 's', '/'),\n\t\tsystemd.property('Environment', 'as', []),\n\t\tsystemd.property('UnsetEnvironment', 'as', systemd.unsetEnvironment(managerEnvironment)),\n\t\tsystemd.property('ExecStartEx', 'a(sasas)', [[process.execPath, [process.execPath, guardianPath(), intent.unitName], ['no-env-expand']]]),\n\t\tsystemd.property('ExtraFileDescriptors', 'a(hs)', [\n\t\t\t[descriptors.guardianStdout, 'task-stdout'],\n\t\t\t[descriptors.guardianStderr, 'task-stderr'],\n\t\t\t[descriptors.guardianObserver, 'observer'],\n\t\t]),\n\t\tsystemd.property('StandardInput', 's', 'null'), systemd.property('StandardOutput', 's', 'null'), systemd.property('StandardError', 's', 'null'),\n\t\tsystemd.property('Requires', 'as', [intent.retentionUnitName]),\n\t\tsystemd.property('After', 'as', [intent.retentionUnitName]),\n\t\tsystemd.property('Before', 'as', [intent.unitName]),\n\t];\n\treturn Object.freeze({\n\t\ttask: Object.freeze(task),\n\t\tretention: Object.freeze(systemd.retentionProperties(observedValidation.marker(intent, 'retention'), intent.unitName)),\n\t\tguardian: Object.freeze(guardian),\n\t});\n}\n\n/** Ověří dependency vztah bez spoléhání na samotné jméno jednotky. */\nfunction includes(properties: Readonly<Record<string, unknown>>, key: string, name: string): boolean {\n\tconst value = properties[key];\n\treturn Array.isArray(value) && value.includes(name);\n}\n\n/** Odmítne kolizi nebo změněnou lifecycle policy kterékoliv ze tří jednotek. */\nexport function assertOwnership(identity: observedTypes.ObservedTaskIdentity, units: ObservedUnitSet): void {\n\tconst task = units.task?.properties;\n\tconst retention = units.retention?.properties;\n\tconst guardian = units.guardian?.properties;\n\tconst invalidTask = task && (task.Transient !== true || task.Description !== observedValidation.marker(identity, 'task')\n\t\t|| task.Type !== 'exec' || task.ExitType !== 'main' || task.Restart !== 'no' || task.KillMode !== 'control-group'\n\t\t|| task.RemainAfterExit !== false || !includes(task, 'Requires', identity.retentionUnitName)\n\t\t|| !includes(task, 'BindsTo', identity.guardianUnitName) || !includes(task, 'After', identity.retentionUnitName)\n\t\t|| !includes(task, 'After', identity.guardianUnitName) || !includes(task, 'PropagatesStopTo', identity.guardianUnitName));\n\tconst invalidRetention = retention && (retention.Transient !== true || retention.Description !== observedValidation.marker(identity, 'retention')\n\t\t|| retention.Type !== 'oneshot' || retention.RemainAfterExit !== true || retention.Restart !== 'no'\n\t\t|| !includes(retention, 'Before', identity.unitName));\n\tconst invalidGuardian = guardian && (guardian.Transient !== true || guardian.Description !== observedValidation.marker(identity, 'guardian')\n\t\t|| guardian.Type !== 'notify' || guardian.NotifyAccess !== 'all' || guardian.Restart !== 'no'\n\t\t|| guardian.KillMode !== 'control-group' || guardian.RemainAfterExit !== false\n\t\t|| !includes(guardian, 'Requires', identity.retentionUnitName) || !includes(guardian, 'After', identity.retentionUnitName)\n\t\t|| !includes(guardian, 'Before', identity.unitName));\n\tif (invalidTask || invalidRetention || invalidGuardian) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit is not the expected owned observed task instance.', { reason: 'unit-ownership', taskId: identity.id });\n}\n\n/** Null invocation evidence nikdy nepovolí ovládnout později vzniklou jednotku. */\nexport function assertReference(reference: observedTypes.ObservedTaskReference, units: ObservedUnitSet): void {\n\tif ((units.task && systemd.invocation(units.task) !== reference.invocationId)\n\t\t|| (units.retention && systemd.invocation(units.retention) !== reference.retentionInvocationId)\n\t\t|| (units.guardian && systemd.invocation(units.guardian) !== reference.guardianInvocationId)) {\n\t\tthrow new errors.TaskError('IDENTITY_CONFLICT', 'The observed task invocation no longer matches the reference.', { reason: 'invocation-mismatch', taskId: reference.id });\n\t}\n}\n\n/** Složí serializovatelnou exact reference i pro částečnou topologii. */\nexport function reference(identity: observedTypes.ObservedTaskIdentity, manager: types.ManagerIdentity, units: ObservedUnitSet): observedTypes.ObservedTaskReference {\n\treturn Object.freeze({\n\t\t...observedValidation.identityOnly(identity), manager,\n\t\tinvocationId: systemd.invocation(units.task),\n\t\tretentionInvocationId: systemd.invocation(units.retention),\n\t\tguardianInvocationId: systemd.invocation(units.guardian),\n\t});\n}\n\n/** Agreguje cleanup konzervativně: complete platí jen při complete obou procesů. */\nfunction aggregateCleanup(payload: types.CleanupState, guardian: types.CleanupState): types.CleanupState {\n\tif (payload === 'complete' && guardian === 'complete') return 'complete';\n\tif (payload === 'pending' || guardian === 'pending') return 'pending';\n\tif (payload === 'incomplete' || guardian === 'incomplete') return 'incomplete';\n\treturn 'unknown';\n}\n\n/** Vytvoří truthful snapshot pouze tehdy, když jsou dostupné všechny tři role. */\nexport async function snapshot(identity: observedTypes.ObservedTaskIdentity, manager: types.ManagerIdentity, units: ObservedUnitSet, readPopulation: (controlGroup: string) => Promise<boolean | null> = systemd.cgroupPopulation): Promise<observedTypes.ObservedTaskSnapshot> {\n\tif (!units.task || !units.guardian) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The observed task topology is incomplete.', { reason: 'unit-not-found', taskId: identity.id });\n\tconst captured = reference(identity, manager, units);\n\tconst payload = await systemd.serviceSnapshot(units.task, readPopulation);\n\tconst guardian = await systemd.serviceSnapshot(units.guardian, readPopulation);\n\tconst cleanup = aggregateCleanup(payload.cleanup, guardian.cleanup);\n\tconst phase: observedTypes.ObservedTaskSnapshot['phase'] = payload.managerTerminal && guardian.managerTerminal && cleanup === 'complete' ? 'completed'\n\t\t: payload.managerTerminal || guardian.managerTerminal || payload.evidence.activeState === 'deactivating' || guardian.evidence.activeState === 'deactivating' || payload.result !== null || guardian.result !== null ? 'cleaning'\n\t\t\t: payload.evidence.activeState === 'active' && guardian.evidence.activeState === 'active' ? 'running' : 'starting';\n\treturn Object.freeze({\n\t\treference: captured,\n\t\tidentity: captured.invocationId && captured.retentionInvocationId && captured.guardianInvocationId ? 'complete' : 'incomplete',\n\t\tphase, cleanup,\n\t\tpayload: Object.freeze(payload), guardian: Object.freeze(guardian),\n\t});\n}\n","import * as crypto from 'node:crypto';\nimport * as validation from './validation';\nimport type * as observedTypes from './observed-types';\nimport type * as types from './types';\n\n/** Konzervativní strop se vejde i po base64 serializaci do systemd manager state řádku. */\nexport const maximumObservedInputBytes = 512 * 1024;\n\n/** Nejdelší canonical base64 reprezentace povoleného stdin, kontrolovaná před alokací Bufferu. */\nconst maximumObservedInputBase64Characters = 4 * Math.ceil(maximumObservedInputBytes / 3);\n\n/** Samostatný namespace brání kolizi se základními dvoujednotkovými tasky. */\nconst observedUnitPrefix = 'pf-systemd-tasks-observed-';\n\n/** Exact identity klíče zajišťují, že uložený intent nemůže nést skryté policy rozšíření. */\nconst observedIdentityKeys = [\n\t'kind', 'version', 'protocolVersion', 'id', 'unitName', 'retentionUnitName',\n\t'guardianUnitName', 'managerScope', 'fingerprint',\n];\n\n/** Normalizuje příkaz a konečný stdin snapshot bez otevření busu nebo descriptoru. */\nfunction normalizeSpec(value: unknown): { readonly spec: types.TaskSpec; readonly stdinBase64: string | null } {\n\tconst source = validation.record(value, 'observed-spec-object');\n\tvalidation.keys(source, ['executable', 'argv', 'cwd', 'env', 'runtimeLimitMs', 'stopGraceMs', 'systemdProperties', 'stdin'], 'observed-spec-keys');\n\tconst spec = validation.validateSpec({\n\t\texecutable: source.executable,\n\t\targv: source.argv,\n\t\tcwd: source.cwd,\n\t\tenv: source.env,\n\t\truntimeLimitMs: source.runtimeLimitMs,\n\t\tstopGraceMs: source.stopGraceMs,\n\t\t...(source.systemdProperties === undefined ? {} : { systemdProperties: source.systemdProperties }),\n\t});\n\tif (source.stdin === null) return Object.freeze({ spec, stdinBase64: null });\n\tlet bytes: Buffer;\n\tif (typeof source.stdin === 'string') bytes = Buffer.from(source.stdin, 'utf8');\n\telse if (source.stdin instanceof Uint8Array) bytes = Buffer.from(source.stdin);\n\telse return validation.invalid('observed-stdin');\n\tif (bytes.byteLength > maximumObservedInputBytes) validation.invalid('observed-stdin-limit');\n\treturn Object.freeze({ spec, stdinBase64: bytes.toString('base64') });\n}\n\n/** Hash zahrnuje přesný canonical stdin vedle normalizovaného execution kontraktu. */\nfunction fingerprint(spec: types.TaskSpec, stdinBase64: string | null): string {\n\treturn crypto.createHash('sha256').update(JSON.stringify({ spec, stdinBase64 })).digest('hex');\n}\n\n/** Připraví úplný observed intent lokálně a zkopíruje mutable Uint8Array vstup. */\nexport function prepareObserved(spec: observedTypes.ObservedTaskSpec): observedTypes.ObservedTaskIntent {\n\tconst normalized = normalizeSpec(spec);\n\tconst id = crypto.randomUUID();\n\treturn Object.freeze({\n\t\tkind: 'observed', version: 1, protocolVersion: 1, id,\n\t\tunitName: `${observedUnitPrefix}${id}.service`,\n\t\tretentionUnitName: `${observedUnitPrefix}${id}-retention.service`,\n\t\tguardianUnitName: `${observedUnitPrefix}${id}-guardian.service`,\n\t\tmanagerScope: 'user', fingerprint: fingerprint(normalized.spec, normalized.stdinBase64),\n\t\tspec: normalized.spec, stdinBase64: normalized.stdinBase64,\n\t});\n}\n\n/** Ověří odvozená jména a verzovaný identity kontrakt bez důvěry v JSON vstup. */\nfunction identity(source: Record<string, unknown>): observedTypes.ObservedTaskIdentity {\n\tif (source.kind !== 'observed' || source.version !== 1 || source.protocolVersion !== 1 || source.managerScope !== 'user') validation.invalid('observed-identity-version-or-scope');\n\tconst id = validation.uuid(source.id, 'observed-identity-id');\n\tif (source.unitName !== `${observedUnitPrefix}${id}.service`\n\t\t|| source.retentionUnitName !== `${observedUnitPrefix}${id}-retention.service`\n\t\t|| source.guardianUnitName !== `${observedUnitPrefix}${id}-guardian.service`) validation.invalid('observed-identity-unit-name');\n\treturn Object.freeze({\n\t\tkind: 'observed', version: 1, protocolVersion: 1, id,\n\t\tunitName: source.unitName as string,\n\t\tretentionUnitName: source.retentionUnitName as string,\n\t\tguardianUnitName: source.guardianUnitName as string,\n\t\tmanagerScope: 'user', fingerprint: validation.digest(source.fingerprint, 'observed-identity-fingerprint'),\n\t});\n}\n\n/** Ověří canonical base64 v uloženém intentu a vynutí stejný raw stdin limit. */\nfunction validateStdinBase64(value: unknown): string | null {\n\tif (value === null) return null;\n\tconst encoded = validation.string(value, 'observed-stdin-base64');\n\tif (encoded.length > maximumObservedInputBase64Characters || encoded.length % 4 !== 0) validation.invalid('observed-stdin-base64');\n\tconst bytes = Buffer.from(encoded, 'base64');\n\tif (bytes.byteLength > maximumObservedInputBytes || bytes.toString('base64') !== encoded) validation.invalid('observed-stdin-base64');\n\treturn encoded;\n}\n\n/** Revaliduje uložený observed intent a detekuje změnu příkazu nebo stdin. */\nexport function validateObservedIntent(value: unknown): observedTypes.ObservedTaskIntent {\n\tconst source = validation.record(value, 'observed-intent-object');\n\tvalidation.keys(source, [...observedIdentityKeys, 'spec', 'stdinBase64'], 'observed-intent-keys');\n\tconst checkedIdentity = identity(source);\n\tconst spec = validation.validateSpec(source.spec);\n\tconst stdinBase64 = validateStdinBase64(source.stdinBase64);\n\tif (fingerprint(spec, stdinBase64) !== checkedIdentity.fingerprint) validation.invalid('observed-intent-fingerprint-mismatch');\n\treturn Object.freeze({ ...checkedIdentity, spec, stdinBase64 });\n}\n\n/** Ověří exact reference včetně explicitně chybějící guardian invocation evidence. */\nexport function validateObservedReference(value: unknown): observedTypes.ObservedTaskReference {\n\tconst source = validation.record(value, 'observed-reference-object');\n\tvalidation.keys(source, [...observedIdentityKeys, 'manager', 'invocationId', 'retentionInvocationId', 'guardianInvocationId'], 'observed-reference-keys');\n\treturn Object.freeze({\n\t\t...identity(source), manager: validation.validateManagerIdentity(source.manager),\n\t\tinvocationId: validation.validateInvocationId(source.invocationId),\n\t\tretentionInvocationId: validation.validateInvocationId(source.retentionInvocationId),\n\t\tguardianInvocationId: validation.validateInvocationId(source.guardianInvocationId),\n\t});\n}\n\n/** Rozliší persisted intent od exact reference bez načítání command dat do diagnostiky. */\nexport function validateObservedTarget(value: unknown): observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference {\n\tconst source = validation.record(value, 'observed-target-object');\n\treturn 'spec' in source ? validateObservedIntent(source) : validateObservedReference(source);\n}\n\n/** Levný discriminator směruje společné client metody ještě před plnou validací. */\nexport function isObservedValue(value: unknown): boolean {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value) && 'kind' in value && value.kind === 'observed';\n}\n\n/** Vrátí pouze ne-citlivou identitu vhodnou do receiptů a not-found výsledků. */\nexport function identityOnly(value: observedTypes.ObservedTaskIdentity): observedTypes.ObservedTaskIdentity {\n\treturn Object.freeze({\n\t\tkind: 'observed', version: 1, protocolVersion: 1, id: value.id,\n\t\tunitName: value.unitName, retentionUnitName: value.retentionUnitName,\n\t\tguardianUnitName: value.guardianUnitName, managerScope: 'user', fingerprint: value.fingerprint,\n\t});\n}\n\n/** Vytvoří ne-citlivý ownership marker pro jednu roli observed topologie. */\nexport function marker(value: observedTypes.ObservedTaskIdentity, role: 'task' | 'retention' | 'guardian'): string {\n\treturn `@primafuture/systemd-tasks:observed:v1:${value.id}:${value.fingerprint}:${role}`;\n}\n\n/** Dekóduje již validovaný stdin snapshot těsně před sestavením manager properties. */\nexport function stdinBytes(intent: observedTypes.ObservedTaskIntent): Buffer | null {\n\treturn intent.stdinBase64 === null ? null : Buffer.from(intent.stdinBase64, 'base64');\n}\n","import * as crypto from 'node:crypto';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** Canonical task namespace; a caller cannot supply arbitrary service names. */\nconst unitPrefix = 'pf-systemd-tasks-';\n/** Maximum JavaScript timer delay without Node's overflow-to-one-millisecond behavior. */\nexport const maximumLocalTimeoutMs = 2_147_483_647;\n/** Upper bound that preserves exact millisecond input and uint64 microsecond conversion. */\nconst maximumDurationMs = Number.MAX_SAFE_INTEGER;\n/** Exact keys of serialized ownership evidence, shared by intentions and references. */\nconst identityKeys = ['version', 'id', 'unitName', 'retentionUnitName', 'managerScope', 'fingerprint'];\n\n/** Report validation errors without copying the offending value into the error. */\nexport function invalid(reason: string): never {\n\tthrow new errors.TaskError('INVALID_INPUT', 'The task request is invalid.', { reason, mutationOutcome: 'not-submitted' });\n}\n\n/** Require a plain data object, including JSON objects with a null prototype. */\nexport function record(value: unknown, reason: string): Record<string, unknown> {\n\tif (value === null || typeof value !== 'object' || Array.isArray(value)) invalid(reason);\n\tconst prototype: unknown = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) invalid(reason);\n\treturn value as Record<string, unknown>;\n}\n\n/** Catch misspellings and unsupported extensions before any I/O or D-Bus mutation. */\nexport function keys(value: Record<string, unknown>, allowed: readonly string[], reason: string): void {\n\tif (Object.keys(value).some(/** Reject keys outside the explicit contract allowlist. */ key => !allowed.includes(key)) || Object.getOwnPropertySymbols(value).length > 0) invalid(reason);\n}\n\n/** D-Bus strings cannot contain NUL; all other characters remain literal. */\nexport function string(value: unknown, reason: string): string {\n\tif (typeof value !== 'string' || value.includes('\\0')) invalid(reason);\n\tfor (const character of value) {\n\t\tconst code = character.codePointAt(0)!;\n\t\tif (code >= 0xd800 && code <= 0xdfff) invalid(reason);\n\t}\n\treturn value;\n}\n\n/** Validate absolute Linux paths without changing symlink-sensitive path semantics. */\nexport function absolutePath(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!path.posix.isAbsolute(result)) invalid(reason);\n\treturn result;\n}\n\n/** Keep zero distinct from unlimited: zero timers are rejected instead of disabling limits. */\nexport function duration(value: unknown, maximum: number, reason: string): number {\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0 || value > maximum) invalid(reason);\n\treturn value;\n}\n\n/** Normalize and copy public command data into a deterministic JSON representation. */\nexport function validateSpec(value: unknown): types.TaskSpec {\n\tconst source = record(value, 'spec-object');\n\tkeys(source, ['executable', 'argv', 'cwd', 'env', 'runtimeLimitMs', 'stopGraceMs', 'systemdProperties'], 'spec-keys');\n\tconst executable = absolutePath(source.executable, 'executable-path');\n\tconst cwd = absolutePath(source.cwd, 'cwd-path');\n\tif (!Array.isArray(source.argv)) invalid('argv-array');\n\tconst argv = Object.freeze(source.argv.map(/** Validate literal arguments without shell expansion or coercion. */ value => string(value, 'argv-string')));\n\tconst environment = record(source.env, 'environment-object');\n\tconst env: Record<string, string> = Object.create(null) as Record<string, string>;\n\tfor (const key of Object.keys(environment).sort()) {\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) invalid('environment-name');\n\t\tenv[key] = string(environment[key], 'environment-value');\n\t}\n\tconst runtimeLimitMs = source.runtimeLimitMs === null ? null : duration(source.runtimeLimitMs, maximumDurationMs, 'runtime-limit');\n\tconst stopGraceMs = duration(source.stopGraceMs, maximumDurationMs, 'stop-grace');\n\tconst properties: types.SystemdProperty[] = [];\n\tif (source.systemdProperties !== undefined) {\n\t\tif (!Array.isArray(source.systemdProperties)) invalid('properties-array');\n\t\tconst names = new Set<string>();\n\t\tfor (const value of source.systemdProperties) {\n\t\t\tconst property = record(value, 'property-object');\n\t\t\tkeys(property, ['name', 'signature', 'value'], 'property-keys');\n\t\t\tif (property.name !== 'CPUWeight' && property.name !== 'IOWeight') invalid('reserved-or-unsupported-property');\n\t\t\tif (property.signature !== 't') invalid('property-signature');\n\t\t\tif (names.has(property.name)) invalid('duplicate-property');\n\t\t\tnames.add(property.name);\n\t\t\tproperties.push(Object.freeze({ name: property.name, signature: 't', value: duration(property.value, 10000, 'property-value') }));\n\t\t}\n\t}\n\tproperties.sort(/** Canonicalize resource ordering for a stable specification fingerprint. */ (left, right) => left.name.localeCompare(right.name));\n\treturn Object.freeze({ executable, argv, cwd, env: Object.freeze(env), runtimeLimitMs, stopGraceMs, systemdProperties: Object.freeze(properties) });\n}\n\n/** Hash normalized command data without exposing that data in unit descriptions. */\nexport function specFingerprint(spec: types.TaskSpec): string {\n\treturn crypto.createHash('sha256').update(JSON.stringify(spec)).digest('hex');\n}\n\n/** Ověří canonical random UUID používané ve všech odvozených názvech jednotek. */\nexport function uuid(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(result)) invalid(reason);\n\treturn result;\n}\n\n/** Ověří lowercase SHA-256 bez zveřejnění původních fingerprintovaných dat. */\nexport function digest(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!/^[0-9a-f]{64}$/.test(result)) invalid(reason);\n\treturn result;\n}\n\n/** Prepare an intention locally; no connection, file opening, or process start occurs. */\nexport function prepare(spec: types.TaskSpec): types.TaskIntent {\n\tconst normalized = validateSpec(spec);\n\tconst id = crypto.randomUUID();\n\treturn Object.freeze({ version: 1, id, unitName: `${unitPrefix}${id}.service`, retentionUnitName: `${unitPrefix}${id}-retention.service`, managerScope: 'user', fingerprint: specFingerprint(normalized), spec: normalized });\n}\n\n/** Validate derived names and a versioned identity without trusting serialized input. */\nfunction identity(source: Record<string, unknown>): types.TaskIdentity {\n\tif (source.version !== 1 || source.managerScope !== 'user') invalid('identity-version-or-scope');\n\tconst id = uuid(source.id, 'identity-id');\n\tif (source.unitName !== `${unitPrefix}${id}.service` || source.retentionUnitName !== `${unitPrefix}${id}-retention.service`) invalid('identity-unit-name');\n\tconst fingerprint = digest(source.fingerprint, 'identity-fingerprint');\n\treturn Object.freeze({ version: 1, id, unitName: source.unitName as string, retentionUnitName: source.retentionUnitName as string, managerScope: 'user', fingerprint });\n}\n\n/** Revalidate stored intentions and detect changes to their command configuration. */\nexport function validateIntent(value: unknown): types.TaskIntent {\n\tconst source = record(value, 'intent-object');\n\tkeys(source, [...identityKeys, 'spec'], 'intent-keys');\n\tconst validatedIdentity = identity(source);\n\tconst spec = validateSpec(source.spec);\n\tif (specFingerprint(spec) !== validatedIdentity.fingerprint) invalid('intent-fingerprint-mismatch');\n\treturn Object.freeze({ ...validatedIdentity, spec });\n}\n\n/** Null explicitly records missing invocation evidence; present IDs have exact wire length. */\nexport function validateInvocationId(value: unknown): string | null {\n\tif (value === null) return null;\n\tconst result = string(value, 'invocation-id');\n\tif (!/^[0-9a-f]{32}$/.test(result)) invalid('invocation-id');\n\treturn result;\n}\n\n/** Validate the persisted manager binding without contacting another manager. */\nexport function validateManagerIdentity(value: unknown): types.ManagerIdentity {\n\tconst source = record(value, 'manager-identity');\n\tkeys(source, ['scope', 'uid', 'machineId', 'bootId', 'busId', 'owner'], 'manager-keys');\n\tif (source.scope !== 'user' || typeof source.uid !== 'number' || !Number.isSafeInteger(source.uid) || source.uid < 0) invalid('manager-scope-or-uid');\n\tconst machineId = string(source.machineId, 'machine-id');\n\tconst busId = string(source.busId, 'bus-id');\n\tconst bootId = string(source.bootId, 'boot-id');\n\tconst owner = string(source.owner, 'manager-owner');\n\tif (!/^[0-9a-f]{32}$/.test(machineId) || !/^[0-9a-f]{32}$/.test(busId)) invalid('manager-identifiers');\n\tif (!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(bootId) || !/^:[0-9]+\\.[0-9]+$/.test(owner)) invalid('manager-identifiers');\n\treturn Object.freeze({ scope: 'user', uid: source.uid, machineId, bootId, busId, owner });\n}\n\n/** Reference validation preserves absent evidence rather than silently upgrading it. */\nexport function validateReference(value: unknown): types.TaskReference {\n\tconst source = record(value, 'reference-object');\n\tkeys(source, [...identityKeys, 'manager', 'invocationId', 'retentionInvocationId'], 'reference-keys');\n\treturn Object.freeze({ ...identity(source), manager: validateManagerIdentity(source.manager), invocationId: validateInvocationId(source.invocationId), retentionInvocationId: validateInvocationId(source.retentionInvocationId) });\n}\n\n/** Distinguish an intention from an exact observed reference at API boundaries. */\nexport function validateTarget(value: unknown): types.TaskIntent | types.TaskReference {\n\tconst source = record(value, 'target-object');\n\treturn 'spec' in source ? validateIntent(source) : validateReference(source);\n}\n\n/** Copy only ownership fields when returning receipts or diagnostics. */\nexport function identityOnly(value: types.TaskIdentity): types.TaskIdentity {\n\treturn Object.freeze({ version: value.version, id: value.id, unitName: value.unitName, retentionUnitName: value.retentionUnitName, managerScope: value.managerScope, fingerprint: value.fingerprint });\n}\n\n/** Produce a non-secret ownership marker shared by creation and later lookup. */\nexport function marker(value: types.TaskIdentity, role: 'task' | 'retention'): string {\n\treturn `@primafuture/systemd-tasks:v1:${value.id}:${value.fingerprint}:${role}`;\n}\n\n/** Validate one explicit standard descriptor without opening files. */\nfunction channel(value: unknown, output: boolean): types.TaskInput | types.TaskOutput {\n\tconst source = record(value, 'io-channel');\n\tif (source.type === 'null') {\n\t\tkeys(source, ['type'], 'null-io-keys');\n\t\treturn Object.freeze({ type: 'null' });\n\t}\n\tif (source.type === 'fd') {\n\t\tkeys(source, ['type', 'fd'], 'fd-io-keys');\n\t\tif (typeof source.fd !== 'number' || !Number.isInteger(source.fd) || source.fd < 0 || source.fd > 2_147_483_647) invalid('file-descriptor');\n\t\treturn Object.freeze({ type: 'fd', fd: source.fd });\n\t}\n\tif (source.type === 'file') {\n\t\tkeys(source, output ? ['type', 'path', 'mode'] : ['type', 'path'], 'file-io-keys');\n\t\tconst filePath = absolutePath(source.path, 'io-file-path');\n\t\tif (!output) return Object.freeze({ type: 'file', path: filePath });\n\t\tif (source.mode !== 'append' && source.mode !== 'truncate') invalid('output-mode');\n\t\treturn Object.freeze({ type: 'file', path: filePath, mode: source.mode });\n\t}\n\treturn invalid('io-type');\n}\n\n/** Validate every channel, including obvious shared-path conflicts, before any I/O. */\nexport function validateIO(value: unknown): types.TaskIO {\n\tconst source = record(value, 'io-object');\n\tkeys(source, ['stdin', 'stdout', 'stderr'], 'io-keys');\n\tconst stdin = channel(source.stdin, false) as types.TaskInput;\n\tconst stdout = channel(source.stdout, true) as types.TaskOutput;\n\tconst stderr = channel(source.stderr, true) as types.TaskOutput;\n\tif (stdout.type === 'file' && stderr.type === 'file' && stdout.path === stderr.path && stdout.mode !== stderr.mode) invalid('conflicting-output-modes');\n\treturn Object.freeze({ stdin, stdout, stderr });\n}\n\n/** Validate local cancellation before subscription or mutation starts. */\nexport function validateWaitOptions(value: unknown = {}, stop = false): types.StopOptions {\n\tconst source = record(value, 'wait-options');\n\tkeys(source, stop ? ['signal', 'timeoutMs', 'wait'] : ['signal', 'timeoutMs'], 'wait-option-keys');\n\tif (source.signal !== undefined && !(source.signal instanceof AbortSignal)) invalid('abort-signal');\n\tif (source.wait !== undefined && typeof source.wait !== 'boolean') invalid('stop-wait');\n\treturn {\n\t\t...(source.signal === undefined ? {} : { signal: source.signal as AbortSignal }),\n\t\t...(source.timeoutMs === undefined ? {} : { timeoutMs: duration(source.timeoutMs, maximumLocalTimeoutMs, 'wait-timeout') }),\n\t\t...(source.wait === undefined ? {} : { wait: source.wait as boolean }),\n\t};\n}\n\n/** Validate connection controls without contacting systemd or loading native sockets. */\nexport function validateConnectOptions(value: unknown = {}): Required<Pick<types.ConnectOptions, 'requestTimeoutMs'>> & Pick<types.ConnectOptions, 'onDiagnostic'> {\n\tconst source = record(value, 'connect-options');\n\tkeys(source, ['requestTimeoutMs', 'onDiagnostic'], 'connect-option-keys');\n\tif (source.onDiagnostic !== undefined && typeof source.onDiagnostic !== 'function') invalid('diagnostic-sink');\n\treturn {\n\t\trequestTimeoutMs: source.requestTimeoutMs === undefined ? 5000 : duration(source.requestTimeoutMs, maximumLocalTimeoutMs, 'request-timeout'),\n\t\t...(source.onDiagnostic === undefined ? {} : { onDiagnostic: source.onDiagnostic as (event: types.DiagnosticEvent) => void }),\n\t};\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport * as validation from './validation';\nimport type * as io from './io';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** A single read of each member of the task's owned retention pair. */\nexport interface UnitPair {\n\t/** Main service, or explicit absence from a reachable manager. */\n\treadonly task: transport.RawUnit | null;\n\t/** Auxiliary retention service, or explicit absence. */\n\treadonly retention: transport.RawUnit | null;\n}\n\n/** The minimal property set needed to create the task and its retention dependency. */\nexport interface CreationProperties {\n\t/** User command, lifecycle policy, and explicit I/O. */\n\treadonly task: readonly transport.Property[];\n\t/** Process-free active record after its initialization command exits. */\n\treadonly retention: readonly transport.Property[];\n}\n\n/** Procesní evidence jedné služby před zabalením do topology-specific snapshotu. */\nexport interface ServiceSnapshot {\n\t/** Main PID je diagnostický údaj, nikoliv instance identity. */\n\treadonly mainPid: number;\n\t/** Terminální manager state nezahrnuje jednotku s čekajícím jobem. */\n\treadonly managerTerminal: boolean;\n\t/** Cgroup cleanup této konkrétní služby. */\n\treadonly cleanup: types.CleanupState;\n\t/** Klasifikovaný exit, pokud už existuje dostatek manager evidence. */\n\treadonly result: types.TaskResult | null;\n\t/** Raw auditní subset použitý pro klasifikaci. */\n\treadonly evidence: types.TaskEvidence;\n}\n\n/** systemd uses uint64 all-ones to represent an explicitly infinite timeout. */\nexport const infinityUsec = 18_446_744_073_709_551_615n;\n/** V1 runs a single standard utility to activate retention without a resident helper. */\nconst retentionExecutable = '/usr/bin/true';\n\n/** Reject a missing internal prerequisite before any task can receive a misleading start receipt. */\nexport async function assertRetentionAvailable(): Promise<void> {\n\ttry {\n\t\tconst executable = await fs.stat(retentionExecutable);\n\t\tif (!executable.isFile()) throw new Error('The retention executable is not a regular file.');\n\t\tawait fs.access(retentionExecutable, fs.constants.X_OK);\n\t} catch (error) {\n\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The retention service requires an executable /usr/bin/true.', { reason: 'retention-executable-unavailable' }, error);\n\t}\n}\n\n/** Keep wire signatures and values adjacent at the systemd mapping boundary. */\nexport function property(name: string, signature: string, value: unknown): transport.Property {\n\treturn { name, signature, value };\n}\n\n/** Odvodí názvy manager environment proměnných, které explicitní spec nepřebírá. */\nexport function unsetEnvironment(managerEnvironment: readonly string[], preserved: Readonly<Record<string, string>> = {}): readonly string[] {\n\tconst names = managerEnvironment.map(/** Oddělí a ověří jméno bez kopírování hodnoty do chyb nebo diagnostiky. */ entry => {\n\t\tconst separator = entry.indexOf('=');\n\t\tconst name = separator > 0 ? entry.slice(0, separator) : '';\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager environment is invalid.', { reason: 'invalid-manager-environment' });\n\t\treturn name;\n\t});\n\treturn [...new Set(names)]\n\t\t.filter(/** Explicitně nastavená hodnota nahrazuje manager variantu a nesmí být následně unsetnuta. */ name => !Object.hasOwn(preserved, name));\n}\n\n/** Sestaví bezprocesní retention službu pro libovolný topology codec. */\nexport function retentionProperties(description: string, beforeUnitName: string): readonly transport.Property[] {\n\treturn [\n\t\tproperty('Description', 's', description),\n\t\tproperty('Type', 's', 'oneshot'), property('RemainAfterExit', 'b', true),\n\t\tproperty('Restart', 's', 'no'), property('StopWhenUnneeded', 'b', false),\n\t\tproperty('Before', 'as', [beforeUnitName]),\n\t\tproperty('ExecStart', 'a(sasb)', [[retentionExecutable, [retentionExecutable], false]]),\n\t\tproperty('StandardInput', 's', 'null'), property('StandardOutput', 's', 'null'), property('StandardError', 's', 'null'),\n\t];\n}\n\n/** Translate a validated intention; the existing D-Bus transport handles the wire protocol. */\nexport function creationProperties(intent: types.TaskIntent, opened: io.OpenIO, managerEnvironment: readonly string[]): CreationProperties {\n\tconst spec = intent.spec;\n\tconst unset = unsetEnvironment(managerEnvironment, spec.env);\n\tconst task = [\n\t\tproperty('Description', 's', validation.marker(intent, 'task')),\n\t\tproperty('Type', 's', 'exec'), property('ExitType', 's', 'main'),\n\t\tproperty('Restart', 's', 'no'), property('RemainAfterExit', 'b', false),\n\t\tproperty('KillMode', 's', 'control-group'), property('KillSignal', 'i', 15),\n\t\tproperty('FinalKillSignal', 'i', 9), property('SendSIGKILL', 'b', true),\n\t\tproperty('TimeoutStopUSec', 't', BigInt(spec.stopGraceMs) * 1000n),\n\t\tproperty('TimeoutStopFailureMode', 's', 'kill'),\n\t\tproperty('RuntimeMaxUSec', 't', spec.runtimeLimitMs === null ? infinityUsec : BigInt(spec.runtimeLimitMs) * 1000n),\n\t\tproperty('WorkingDirectory', 's', spec.cwd),\n\t\tproperty('Environment', 'as', Object.entries(spec.env).map(/** Encode explicit environment entries in systemd assignment form. */ ([name, value]) => `${name}=${value}`)),\n\t\tproperty('UnsetEnvironment', 'as', unset),\n\t\tproperty('ExecStartEx', 'a(sasas)', [[spec.executable, [spec.executable, ...spec.argv], ['no-env-expand']]]),\n\t\tproperty('Requires', 'as', [intent.retentionUnitName]), property('After', 'as', [intent.retentionUnitName]),\n\t];\n\tfor (const [channel, descriptor] of Object.entries(opened.descriptors)) {\n\t\tconst name = channel === 'stdin' ? 'StandardInput' : channel === 'stdout' ? 'StandardOutput' : 'StandardError';\n\t\ttask.push(descriptor === null ? property(name, 's', 'null') : property(`${name}FileDescriptor`, 'h', descriptor));\n\t}\n\tfor (const resource of spec.systemdProperties ?? []) task.push(property(resource.name, resource.signature, BigInt(resource.value)));\n\tconst retention = retentionProperties(validation.marker(intent, 'retention'), intent.unitName);\n\treturn { task, retention };\n}\n\n/** Refuse stale manager bindings before looking up or controlling a name. */\nexport function assertManager(expected: types.ManagerIdentity, actual: types.ManagerIdentity): void {\n\tfor (const key of ['scope', 'uid', 'machineId', 'bootId', 'busId', 'owner'] as const) {\n\t\tif (expected[key] !== actual[key]) throw new errors.TaskError('IDENTITY_CONFLICT', 'The reference belongs to a different manager.', { reason: 'manager-identity' });\n\t}\n}\n\n/** Read a required manager scalar, failing explicitly instead of inventing default evidence. */\nfunction string(properties: Readonly<Record<string, unknown>>, key: string): string {\n\tconst value = properties[key];\n\tif (typeof value !== 'string') throw new errors.TaskError('RESULT_UNAVAILABLE', 'Required manager evidence is unavailable.', { reason: 'invalid-manager-properties' });\n\treturn value;\n}\n\n/** Validate integer evidence before using it as an exit status, PID, or job identity. */\nfunction integer(properties: Readonly<Record<string, unknown>>, key: string): number {\n\tconst value = properties[key];\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) throw new errors.TaskError('RESULT_UNAVAILABLE', 'Required numeric manager evidence is unavailable.', { reason: 'invalid-manager-properties' });\n\treturn value;\n}\n\n/** Preserve exact uint64 timestamps in JSON-friendly decimal form. */\nfunction timestamp(properties: Readonly<Record<string, unknown>>, key: string): string {\n\tconst value = properties[key];\n\tif (typeof value === 'bigint' && value >= 0n) return value.toString();\n\tif (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) return String(value);\n\tthrow new errors.TaskError('RESULT_UNAVAILABLE', 'Required timestamp evidence is unavailable.', { reason: 'invalid-manager-properties' });\n}\n\n/** Normalize the manager's byte-array ID; absence never becomes an invented UUID. */\nexport function invocation(unit: transport.RawUnit | null): string | null {\n\tif (unit === null) return null;\n\tconst value = unit.properties.InvocationID;\n\tif (!(value instanceof Uint8Array) || (value.byteLength !== 0 && value.byteLength !== 16)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'Invocation identity is unavailable.', { reason: 'invalid-invocation-id' });\n\treturn value.byteLength === 0 ? null : Buffer.from(value).toString('hex');\n}\n\n/** Confirm the recorded dependency relationship instead of trusting a service name alone. */\nfunction includes(properties: Readonly<Record<string, unknown>>, key: string, name: string): boolean {\n\tconst value = properties[key];\n\treturn Array.isArray(value) && value.includes(name);\n}\n\n/** Guard against adopting a colliding unit or a changed lifecycle policy. */\nexport function assertOwnership(identity: types.TaskIdentity, pair: UnitPair): void {\n\tconst main = pair.task?.properties;\n\tconst keeper = pair.retention?.properties;\n\tconst invalidMain = main && (main.Transient !== true || main.Description !== validation.marker(identity, 'task') || main.Type !== 'exec' || main.ExitType !== 'main' || main.Restart !== 'no' || main.KillMode !== 'control-group' || main.RemainAfterExit !== false || !includes(main, 'Requires', identity.retentionUnitName) || !includes(main, 'After', identity.retentionUnitName));\n\tconst invalidKeeper = keeper && (keeper.Transient !== true || keeper.Description !== validation.marker(identity, 'retention') || keeper.Type !== 'oneshot' || keeper.RemainAfterExit !== true || keeper.Restart !== 'no' || !includes(keeper, 'Before', identity.unitName));\n\tif (invalidMain || invalidKeeper) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit is not the expected owned task instance.', { reason: 'unit-ownership', taskId: identity.id });\n}\n\n/** Compare every known reference field exactly; null evidence is not permission to adopt a later run. */\nexport function assertReference(reference: types.TaskReference, pair: UnitPair): void {\n\tif ((pair.task && invocation(pair.task) !== reference.invocationId) || (pair.retention && invocation(pair.retention) !== reference.retentionInvocationId)) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit invocation no longer matches the reference.', { reason: 'invocation-mismatch', taskId: reference.id });\n}\n\n/** Build serializable instance evidence independently of the manager property payload. */\nexport function reference(identity: types.TaskIdentity, manager: types.ManagerIdentity, pair: UnitPair): types.TaskReference {\n\treturn Object.freeze({ ...validation.identityOnly(identity), manager, invocationId: invocation(pair.task), retentionInvocationId: invocation(pair.retention) });\n}\n\n/** A pending job prevents an inactive service from being classified as a finished task. */\nexport function jobId(unit: transport.RawUnit): number {\n\tconst value = unit.properties.Job;\n\tif (!Array.isArray(value) || typeof value[0] !== 'number' || !Number.isSafeInteger(value[0]) || value[0] < 0) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager job state is unavailable.', { reason: 'invalid-job-state' });\n\treturn value[0];\n}\n\n/** Terminal manager state alone is insufficient; cgroup population is checked separately. */\nexport function managerTerminal(unit: transport.RawUnit): boolean {\n\treturn ['inactive', 'failed'].includes(string(unit.properties, 'ActiveState')) && jobId(unit) === 0;\n}\n\n/** Read hierarchical population, avoiding direct PID identity or a main-PID-only cleanup claim. */\nexport async function cgroupPopulation(controlGroup: string): Promise<boolean | null> {\n\tif (controlGroup === '') return false;\n\tif (!controlGroup.startsWith('/') || controlGroup.includes('\\0') || path.posix.normalize(controlGroup) !== controlGroup) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an invalid cgroup path.', { reason: 'invalid-cgroup-path' });\n\ttry {\n\t\tconst contents = await fs.readFile(`/sys/fs/cgroup${controlGroup}/cgroup.events`, 'utf8');\n\t\tconst value = contents.match(/^populated ([01])$/m)?.[1];\n\t\treturn value === undefined ? null : value === '1';\n\t} catch (error) {\n\t\tif (errors.errorCode(error) === 'ENOENT') return false;\n\t\treturn null;\n\t}\n}\n\n/** Klasifikuje jednu process-bearing službu bez znalosti její role v topologii. */\nexport async function serviceSnapshot(unit: transport.RawUnit, readPopulation: (controlGroup: string) => Promise<boolean | null> = cgroupPopulation): Promise<ServiceSnapshot> {\n\tconst properties = unit.properties;\n\tconst terminal = managerTerminal(unit);\n\tconst activeState = string(properties, 'ActiveState');\n\tconst controlGroup = string(properties, 'ControlGroup');\n\tconst populated = terminal ? await readPopulation(controlGroup) : null;\n\tconst cleanup: types.CleanupState = !terminal ? 'pending' : populated === false ? 'complete' : populated === true ? 'incomplete' : 'unknown';\n\tconst code = integer(properties, 'ExecMainCode');\n\tconst status = integer(properties, 'ExecMainStatus');\n\tconst enteredActive = timestamp(properties, 'ActiveEnterTimestampMonotonic');\n\tconst started = timestamp(properties, 'ExecMainStartTimestampMonotonic');\n\tconst evidence: types.TaskEvidence = Object.freeze({\n\t\tactiveState, subState: string(properties, 'SubState'), systemdResult: string(properties, 'Result'),\n\t\texecMainCode: code, execMainStatus: status,\n\t\texecMainStartUsec: started, execMainExitUsec: timestamp(properties, 'ExecMainExitTimestampMonotonic'),\n\t\tactiveEnterUsec: enteredActive, jobId: jobId(unit), controlGroup, cgroupPopulated: populated,\n\t});\n\tlet result: types.TaskResult | null = null;\n\tif (code !== 0 || terminal) {\n\t\tconst kind: types.TaskResult['kind'] = code === 1 ? (enteredActive === '0' ? 'execution-failed' : 'exited') : code === 2 || code === 3 ? 'signaled' : started === '0' && enteredActive === '0' ? 'not-executed' : 'unknown';\n\t\tresult = Object.freeze({ kind, exitCode: code === 1 ? status : null, signal: code === 2 || code === 3 ? status : null, execution: enteredActive === '0' ? 'not-confirmed' : 'confirmed', systemdResult: evidence.systemdResult, cleanup });\n\t}\n\treturn Object.freeze({ mainPid: integer(properties, 'MainPID'), managerTerminal: terminal, cleanup, result, evidence });\n}\n\n/** Derive truthful status from manager evidence, retaining ambiguity in cause and cleanup. */\nexport async function snapshot(identity: types.TaskIdentity, manager: types.ManagerIdentity, pair: UnitPair, readPopulation: (controlGroup: string) => Promise<boolean | null> = cgroupPopulation): Promise<types.TaskSnapshot> {\n\tif (!pair.task) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task unit was not found.', { reason: 'unit-not-found', taskId: identity.id });\n\tconst captured = reference(identity, manager, pair);\n\tconst process = await serviceSnapshot(pair.task, readPopulation);\n\tconst phase: types.TaskSnapshot['phase'] = process.managerTerminal && process.cleanup === 'complete' ? 'completed'\n\t\t: process.managerTerminal || process.evidence.activeState === 'deactivating' || process.evidence.execMainCode !== 0 ? 'cleaning'\n\t\t\t: process.evidence.activeState === 'active' ? 'running' : 'starting';\n\treturn Object.freeze({ reference: captured, identity: captured.invocationId && captured.retentionInvocationId ? 'complete' : 'incomplete', phase, ...process });\n}\n","import * as clientCore from './client-core';\nimport * as errors from './errors';\nimport * as observedProtocol from './observed-protocol';\nimport * as observedSystemd from './observed-systemd';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport * as validation from './validation';\nimport * as waiting from './waiting';\nimport type * as observedTypes from './observed-types';\nimport type * as types from './types';\n\n/** Observed topology codec nad jedním sdíleným klientským transportem a mutation enginem. */\nexport class ObservedOperations {\n\t/** Všechny lokální a manager zdroje vlastní společný client core. */\n\tprivate readonly core: clientCore.ClientCore;\n\n\t/** Připojí tříjednotkové operace bez vytvoření druhého D-Bus spojení. */\n\tconstructor(core: clientCore.ClientCore) {\n\t\tthis.core = core;\n\t}\n\n\t/** Přečte task, retention a guardian ve stabilním pořadí jednoho topology snapshotu. */\n\tprivate async readSet(identity: observedTypes.ObservedTaskIdentity): Promise<observedSystemd.ObservedUnitSet> {\n\t\tconst [task, retention, guardian] = await this.core.readUnits(identity, [identity.unitName, identity.retentionUnitName, identity.guardianUnitName]);\n\t\treturn Object.freeze({ task: task ?? null, retention: retention ?? null, guardian: guardian ?? null });\n\t}\n\n\t/** Ověří manager binding, ownership marker, policy a případná exact invocation ID. */\n\tprivate async checkedSet(target: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedSystemd.ObservedUnitSet> {\n\t\tif ('manager' in target) systemd.assertManager(target.manager, this.core.manager);\n\t\tconst units = await this.readSet(target);\n\t\tobservedSystemd.assertOwnership(target, units);\n\t\tif ('manager' in target) observedSystemd.assertReference(target, units);\n\t\treturn units;\n\t}\n\n\t/** Rozliší úplnou absenci, částečnou topologii a truthful společný snapshot. */\n\tprivate async lookupInternal(target: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedLookupResult> {\n\t\tconst units = await this.checkedSet(target);\n\t\tif (!units.task && !units.retention && !units.guardian) return { status: 'not-found', identity: observedValidation.identityOnly(target) };\n\t\tif (!units.task || !units.retention || !units.guardian) return { status: 'incomplete', reference: observedSystemd.reference(target, this.core.manager, units) };\n\t\tconst snapshot = await observedSystemd.snapshot(target, this.core.manager, units);\n\t\treturn { status: 'found', reference: snapshot.reference, snapshot };\n\t}\n\n\t/** Odešle jedinou tříjednotkovou transakci a vrátí se až po guardian readiness. */\n\tasync startObserved(value: observedTypes.ObservedTaskIntent, rawOptions: observedTypes.ObservedStartOptions): Promise<observedTypes.ObservedStartResult> {\n\t\tconst intent = observedValidation.validateObservedIntent(value);\n\t\tconst options = observedProtocol.validateStartOptions(rawOptions);\n\t\treturn await this.core.diagnostics.run(intent, /** Sváže submission i readiness s jedním redigovaným task kontextem. */ () => this.core.mutate(intent, async () => {\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet sockets: observedProtocol.PreparedObservedSockets | undefined;\n\t\t\ttry {\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.assertUnattempted(intent);\n\t\t\t\tconst inherited = await this.core.transport.readEnvironment();\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tlet unregister: (() => void) | undefined;\n\t\t\t\tlet terminal = false;\n\t\t\t\tsockets = await observedProtocol.prepareSockets(options, /** Odregistruje terminal handle i při závodu během startu. */ () => { terminal = true; unregister?.(); });\n\t\t\t\tunregister = this.core.register(sockets.observation);\n\t\t\t\tif (terminal) unregister();\n\t\t\t\tconst mapped = observedSystemd.creationProperties(intent, sockets.descriptors, inherited);\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.markAttempt(intent);\n\t\t\t\tstage = 'submitted';\n\t\t\t\tthis.core.diagnostics.emit('observed.start.submitted');\n\t\t\t\tlet jobPath: string;\n\t\t\t\ttry {\n\t\t\t\t\tjobPath = await this.core.transport.start(intent.unitName, mapped.task, [\n\t\t\t\t\t\t{ name: intent.retentionUnitName, properties: mapped.retention },\n\t\t\t\t\t\t{ name: intent.guardianUnitName, properties: mapped.guardian },\n\t\t\t\t\t]);\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t} finally { sockets.closeSubmitted(); }\n\t\t\t\tawait sockets.observation.waitReady(observedSystemd.guardianReadinessTimeoutMs);\n\t\t\t\tthis.core.diagnostics.emit('observed.start.accepted');\n\t\t\t\tthis.core.hub.notify(intent.unitName);\n\t\t\t\tconst receipt: observedTypes.ObservedStartReceipt = Object.freeze({ outcome: 'accepted', identity: observedValidation.identityOnly(intent), manager: this.core.manager, jobPath });\n\t\t\t\treturn Object.freeze({ receipt, observation: sockets.observation });\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'startObserved', intent, stage);\n\t\t\t\tthis.core.diagnostics.emit('observed.start.error', reported.code);\n\t\t\t\tif (sockets) await sockets.observation.abort(reported);\n\t\t\t\tthrow reported;\n\t\t\t} finally { sockets?.closeSubmitted(); }\n\t\t}));\n\t}\n\n\t/** Čte existující observed evidence bez startu, retry nebo output reconnectu. */\n\tasync lookup(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedLookupResult> {\n\t\tconst target = observedValidation.validateObservedTarget(value);\n\t\treturn await this.core.diagnostics.run(target, /** Koreluje lookup jen bezpečnou identitou. */ async () => await this.lookupInternal(target));\n\t}\n\n\t/** Vyžaduje kompletní exact topologii reference. */\n\tasync inspect(value: observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedTaskSnapshot> {\n\t\tconst reference = observedValidation.validateObservedReference(value);\n\t\treturn await this.core.diagnostics.run(reference, /** Missing role zůstává explicitní observation chyba. */ async () => {\n\t\t\tconst found = await this.lookupInternal(reference);\n\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The referenced observed task result is unavailable.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'observed-topology-incomplete', taskId: reference.id });\n\t\t\treturn found.snapshot;\n\t\t});\n\t}\n\n\t/** Sleduje primární unit namespace; transport do něj přesměruje i auxiliary změny. */\n\tprivate async waitInternal(target: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, control: waiting.WaitControl): Promise<observedTypes.ObservedTaskSnapshot> {\n\t\tcontrol.check();\n\t\tthis.core.assertOpen();\n\t\tconst watch = this.core.hub.watch(target.unitName);\n\t\tlet taskInvocation: string | null = null;\n\t\tlet retentionInvocation: string | null = null;\n\t\tlet guardianInvocation: string | null = null;\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tcontrol.check();\n\t\t\t\tconst generation = watch.version();\n\t\t\t\tconst found = await control.race(this.lookupInternal(target));\n\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The observed task result is no longer complete.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'observed-topology-incomplete', taskId: target.id });\n\t\t\t\tconst captured = found.reference;\n\t\t\t\tif ((taskInvocation !== null && captured.invocationId !== taskInvocation)\n\t\t\t\t\t|| (retentionInvocation !== null && captured.retentionInvocationId !== retentionInvocation)\n\t\t\t\t\t|| (guardianInvocation !== null && captured.guardianInvocationId !== guardianInvocation)) {\n\t\t\t\t\tthrow new errors.TaskError('IDENTITY_CONFLICT', 'The observed task identity changed while waiting.', { reason: 'invocation-mismatch', taskId: target.id });\n\t\t\t\t}\n\t\t\t\ttaskInvocation = captured.invocationId;\n\t\t\t\tretentionInvocation = captured.retentionInvocationId;\n\t\t\t\tguardianInvocation = captured.guardianInvocationId;\n\t\t\t\tif (found.snapshot.payload.managerTerminal && found.snapshot.guardian.managerTerminal) {\n\t\t\t\t\tthis.core.diagnostics.emit(found.snapshot.cleanup === 'complete' ? 'observed.wait.completed' : 'observed.wait.cleanup-incomplete');\n\t\t\t\t\treturn found.snapshot;\n\t\t\t\t}\n\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t}\n\t\t} finally { watch.close(); }\n\t}\n\n\t/** Local abort nebo deadline nijak nemění payload, guardian ani manager timers. */\n\tasync wait(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options: types.WaitOptions = {}): Promise<observedTypes.ObservedTaskSnapshot> {\n\t\tconst target = observedValidation.validateObservedTarget(value);\n\t\tconst checkedOptions = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(target, /** Každý waiter vlastní oddělený cancellation scope. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(checkedOptions);\n\t\t\ttry { return await this.waitInternal(target, control); }\n\t\t\tcatch (error) {\n\t\t\t\tif (error instanceof errors.TaskError) this.core.diagnostics.emit('observed.wait.error', error.code);\n\t\t\t\tthrow error;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Zastaví jen payload; guardian zůstane živý, dokud nedrainuje oba kanály. */\n\tasync stop(value: observedTypes.ObservedTaskReference, options: types.StopOptions = {}): Promise<observedTypes.ObservedStopReceipt> {\n\t\tconst reference = observedValidation.validateObservedReference(value);\n\t\tconst checkedOptions = validation.validateWaitOptions(options, true);\n\t\treturn await this.core.diagnostics.run(reference, /** Zachová delivery outcome přes volitelné completion čekání. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(checkedOptions);\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\ttry {\n\t\t\t\tcontrol.check();\n\t\t\t\treturn await control.race(this.core.mutate(reference, async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tconst found = await control.race(this.lookupInternal(reference));\n\t\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The observed task to stop is unavailable.', { reason: found.status === 'incomplete' ? 'observed-topology-incomplete' : 'unit-not-found' });\n\t\t\t\t\tif (found.snapshot.phase === 'completed') return { outcome: 'already-completed', reference, jobPath: null, completion: found.snapshot };\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\tconst jobPath = await control.race(this.core.transport.stop(reference.unitName));\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\tthis.core.diagnostics.emit('observed.stop.accepted');\n\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\tconst completion = checkedOptions.wait ? await this.waitInternal(reference, control) : null;\n\t\t\t\t\treturn { outcome: 'accepted', reference, jobPath, completion };\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'stop', reference, stage);\n\t\t\t\tthis.core.diagnostics.emit('observed.stop.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Odmítne release, dokud libovolná existující procesní role není terminální a čistá. */\n\tprivate async assertReleasable(reference: observedTypes.ObservedTaskReference, units: observedSystemd.ObservedUnitSet): Promise<void> {\n\t\tfor (const unit of [units.task, units.guardian]) {\n\t\t\tif (!unit) continue;\n\t\t\tconst snapshot = await systemd.serviceSnapshot(unit);\n\t\t\tif (!snapshot.managerTerminal || snapshot.cleanup !== 'complete') throw new errors.TaskError('TASK_RUNNING', 'An observed task can be released only after payload and guardian cleanup.', { reason: 'observed-task-not-completed', taskId: reference.id });\n\t\t}\n\t}\n\n\t/** Reset own failed record vrací false pouze při explicitním souběžném zmizení. */\n\tprivate async resetOwnFailed(name: string): Promise<boolean> {\n\t\ttry { await this.core.transport.resetFailed(name); return true; }\n\t\tcatch (error) { if (!clientCore.isAbsence(error)) throw error; return false; }\n\t}\n\n\t/** Uvolní retention až po opakované ownership a cleanup kontrole všech rolí. */\n\tasync release(value: observedTypes.ObservedTaskReference, options: types.ReleaseOptions = {}): Promise<types.ReleaseReceipt> {\n\t\tconst reference = observedValidation.validateObservedReference(value);\n\t\tconst checkedOptions = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(reference, /** Celý cleanup má jeden caller-owned deadline. */ async () => {\n\t\t\tconst control = new waiting.WaitControl({ ...checkedOptions, timeoutMs: checkedOptions.timeoutMs ?? clientCore.defaultReleaseTimeoutMs });\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet acceptedCleanupMutations = 0;\n\t\t\ttry {\n\t\t\t\treturn await control.race(this.core.mutate(reference, async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tlet units = await control.race(this.checkedSet(reference));\n\t\t\t\t\tif (!units.task && !units.retention && !units.guardian) return { released: true, alreadyReleased: true, collected: true };\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, units));\n\t\t\t\t\tfor (const role of ['task', 'guardian', 'retention'] as const) {\n\t\t\t\t\t\tunits = await control.race(this.checkedSet(reference));\n\t\t\t\t\t\tconst name = role === 'task' ? reference.unitName : role === 'guardian' ? reference.guardianUnitName : reference.retentionUnitName;\n\t\t\t\t\t\tconst unit = units[role];\n\t\t\t\t\t\tif (unit?.properties.ActiveState !== 'failed') continue;\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(name))) { acceptedCleanupMutations++; stage = 'accepted'; }\n\t\t\t\t\t\telse stage = previousStage;\n\t\t\t\t\t\tunits = await control.race(this.checkedSet(reference));\n\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, units));\n\t\t\t\t\t}\n\t\t\t\t\tif (units.retention) {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait control.race(this.core.transport.stop(reference.retentionUnitName));\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} catch (error) { if (!clientCore.isAbsence(error)) throw error; stage = previousStage; }\n\t\t\t\t\t}\n\t\t\t\t\tconst watch = this.core.hub.watch(reference.unitName);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\tconst generation = watch.version();\n\t\t\t\t\t\t\tunits = await control.race(this.checkedSet(reference));\n\t\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, units));\n\t\t\t\t\t\t\tlet resetFailure = false;\n\t\t\t\t\t\t\tfor (const role of ['task', 'guardian', 'retention'] as const) {\n\t\t\t\t\t\t\t\tconst unit = units[role];\n\t\t\t\t\t\t\t\tif (unit?.properties.ActiveState !== 'failed') continue;\n\t\t\t\t\t\t\t\tconst name = role === 'task' ? reference.unitName : role === 'guardian' ? reference.guardianUnitName : reference.retentionUnitName;\n\t\t\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(name))) {\n\t\t\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t\t\t\tresetFailure = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (resetFailure) continue;\n\t\t\t\t\t\t\tif (!units.retention || (systemd.managerTerminal(units.retention) && units.retention.properties.ActiveState !== 'failed')) {\n\t\t\t\t\t\t\t\tthis.core.diagnostics.emit('observed.release.completed');\n\t\t\t\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\t\t\t\treturn { released: true, alreadyReleased: false, collected: !units.task && !units.retention && !units.guardian };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally { watch.close(); }\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.releaseError(error, reference, stage, acceptedCleanupMutations);\n\t\t\t\tthis.core.diagnostics.emit('observed.release.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n}\n","import * as dbus from 'dbus-next';\nimport * as fs from 'node:fs/promises';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** A property description shared by the mapping and the concrete D-Bus adapter. */\nexport interface Property {\n\t/** Exact systemd property name. */\n\treadonly name: string;\n\t/** D-Bus signature, converted to a transport Variant only inside this module. */\n\treadonly signature: string;\n\t/** Validated wire value; not part of the public API. */\n\treadonly value: unknown;\n}\n\n/** Raw service properties stay internal; public snapshots expose a small diagnostic subset. */\nexport interface RawUnit {\n\t/** Unwrapped manager properties, which must be validated before classification. */\n\treadonly properties: Readonly<Record<string, unknown>>;\n}\n\n/** Jedna auxiliary transient unit vytvořená atomicky s primární službou. */\nexport interface AuxiliaryUnit {\n\t/** Exact systemd unit name odvozené z validovaného intentu. */\n\treadonly name: string;\n\t/** Validované properties převedené na Variant až na transportní hranici. */\n\treadonly properties: readonly Property[];\n}\n\n/** Narrow adapter seam for deterministic failures and races, not a generic task backend. */\nexport interface Transport {\n\t/** Identity fixed during connection and never silently updated. */\n\treadonly identity: types.ManagerIdentity;\n\t/** Reject a closed or failed connection before an operation can submit a request. */\n\tassertOpen(): void;\n\t/** Read a service; only an explicit no-such-unit reply maps to null. */\n\treadUnit(name: string): Promise<RawUnit | null>;\n\t/** Read inherited environment entries without changing manager configuration. */\n\treadEnvironment(): Promise<readonly string[]>;\n\t/** Submit one primary unit and all auxiliaries atomically with collision mode fail. */\n\tstart(name: string, properties: readonly Property[], auxiliaries: readonly AuxiliaryUnit[]): Promise<string>;\n\t/** Stop can replace a queued start job, but can never start or restart a service. */\n\tstop(name: string): Promise<string>;\n\t/** Clear a completed failed state so normal garbage collection can proceed. */\n\tresetFailed(name: string): Promise<void>;\n\t/** Subscribe to relevant notifications; an undefined name means connection-wide invalidation. */\n\tonChange(listener: (unitName?: string) => void): () => void;\n\t/** Destroy the local socket and pending observation resources only. */\n\tclose(): void;\n}\n\n/** Pinned dbus-next internals needed for safe descriptor and pending-call ownership. */\ninterface NativeBusInternals {\n\t/** The native stream's destroy method closes immediately instead of waiting for peer EOF. */\n\treadonly _connection: {\n\t\t/** Descriptor-capable stream created by the existing transport implementation. */\n\t\treadonly stream: {\n\t\t\t/** Negotiated Unix FD capability, updated by the transport handshake. */\n\t\t\treadonly supportsUnixFd?: boolean;\n\t\t\t/** Destroy local native socket resources, without sending a systemd stop. */\n\t\t\tdestroy(): void;\n\t\t\t/** Observe native stream EOF and errors. */\n\t\t\ton(event: string, listener: (...args: unknown[]) => void): void;\n\t\t};\n\t};\n\t/** Delete abandoned reply closures; upstream does not reject them on disconnect. */\n\treadonly _methodReturnHandlers: Record<number, unknown>;\n}\n\n/** Upstream accepts this option at runtime but omits it from SessionBusOptions declarations. */\ninterface DescriptorBusOptions extends dbus.SessionBusOptions {\n\t/** Require negotiation of SCM_RIGHTS-backed D-Bus descriptors. */\n\treadonly negotiateUnixFd: boolean;\n}\n\n/** Pending request ownership is separate from the upstream promise's lifetime. */\ninterface PendingRequest {\n\t/** Describes the delivery semantics of this request. */\n\treadonly operation: string;\n\t/** Mutations whose reply is lost must report an unknown outcome. */\n\treadonly mutation: boolean;\n\t/** Local timeout cleared on every settlement path. */\n\treadonly timer: ReturnType<typeof setTimeout>;\n\t/** Reject the adapter's promise independently of the transport's abandoned promise. */\n\treadonly reject: (error: unknown) => void;\n}\n\n/** Address of the concrete local manager API, not a user-supplied general D-Bus service. */\nconst managerPath = '/org/freedesktop/systemd1';\n/** Stable manager interface whose methods implement task lifecycle operations. */\nconst managerInterface = 'org.freedesktop.systemd1.Manager';\n/** Bus daemon endpoint used for identity and signal subscriptions. */\nconst busPath = '/org/freedesktop/DBus';\n/** Bus errors that cannot prove non-delivery of a mutation. */\nconst uncertainReplies = new Set(['org.freedesktop.DBus.Error.NoReply', 'org.freedesktop.DBus.Error.Timeout', 'org.freedesktop.DBus.Error.Disconnected']);\n/** Explicit absence replies, never inferred from a timeout or vanished manager. */\nconst absenceReplies = new Set(['org.freedesktop.systemd1.NoSuchUnit', 'org.freedesktop.DBus.Error.UnknownObject']);\n\n/** Native installation failures are permanent environment limits, not manager outages. */\nfunction connectionFailure(error: unknown): errors.TaskError {\n\tconst code = errors.errorCode(error);\n\tif (code === 'ERR_FDX_PLATFORM' || code === 'ERR_FDX_ABI' || code === 'ERR_FDX_BINARY_MISSING') {\n\t\treturn new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The installed Unix FD transport does not support this environment.', { reason: code }, error);\n\t}\n\treturn new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection failed.', {}, error);\n}\n\n/** Read one scalar from the untrusted shape of a D-Bus method return. */\nfunction scalar(reply: readonly unknown[]): string {\n\tif (typeof reply[0] !== 'string') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an unexpected response.', { reason: 'invalid-manager-response' });\n\treturn reply[0];\n}\n\n/** Convert a property dictionary without leaking transport types into the core. */\nfunction properties(reply: readonly unknown[]): Readonly<Record<string, unknown>> {\n\tconst source = reply[0];\n\tif (typeof source !== 'object' || source === null || Array.isArray(source)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned invalid properties.', { reason: 'invalid-manager-response' });\n\tconst result: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n\tfor (const [key, value] of Object.entries(source)) {\n\t\tif (!(value instanceof dbus.Variant)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an invalid property value.', { reason: 'invalid-manager-response' });\n\t\tresult[key] = value.value as unknown;\n\t}\n\treturn result;\n}\n\n/** Convert mapping values using the existing transport's marshaller. */\nfunction wireProperties(values: readonly Property[]): [string, dbus.Variant][] {\n\treturn values.map(/** Convert one validated property to the existing transport representation. */ value => [value.name, new dbus.Variant(value.signature, value.value)]);\n}\n\n/** Bound, identity-aware connection to the local systemd user manager. */\nexport class DbusTransport implements Transport {\n\t/** Default manager reply deadline; unrelated to task runtime. */\n\treadonly requestTimeoutMs: number;\n\t/** Underlying existing D-Bus implementation, loaded without connecting at module import. */\n\tprivate readonly bus: dbus.MessageBus;\n\t/** Documented pinned internal hooks; all access is confined to this adapter. */\n\tprivate readonly internals: NativeBusInternals;\n\t/** Outstanding calls rejected together when the connection becomes unusable. */\n\tprivate readonly pending = new Map<number, PendingRequest>();\n\t/** Shared source of state invalidations for lifecycle observers. */\n\tprivate readonly listeners = new Set<(unitName?: string) => void>();\n\t/** A connection never reconnects or changes identity behind the caller's back. */\n\tprivate failure: errors.TaskError | undefined;\n\t/** Unique manager bus name, populated before binding task operations. */\n\tprivate owner: string | undefined;\n\t/** Bound environment identity, available only after successful explicit connection. */\n\tprivate boundIdentity: types.ManagerIdentity | undefined;\n\n\t/** Create only the socket; capability and identity checks are completed by open(). */\n\tprivate constructor(requestTimeoutMs: number) {\n\t\tthis.requestTimeoutMs = requestTimeoutMs;\n\t\tconst options: DescriptorBusOptions = { busAddress: `unix:path=/run/user/${process.getuid!()}/bus`, negotiateUnixFd: true, authMethods: ['EXTERNAL'] };\n\t\tthis.bus = dbus.sessionBus(options);\n\t\t// dbus-next 0.10.2 has no public immediate-close or pending-call cancellation API.\n\t\tthis.internals = this.bus as unknown as NativeBusInternals;\n\t\tthis.bus.on('error', /** Preserve native compatibility errors while invalidating pending operations. */ error => this.fail(connectionFailure(error)));\n\t\tthis.internals._connection.stream.on('end', /** Treat native stream EOF as manager unavailability. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection ended.')));\n\t\tthis.internals._connection.stream.on('close', /** Wake callers when the native connection closes. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection closed.')));\n\t\tthis.bus.on('message', /** Reconcile unit notifications and manager-owner changes. */ (message: dbus.Message) => this.handleMessage(message));\n\t}\n\n\t/** Verify the concrete local environment without provisioning services or capabilities. */\n\tstatic async open(requestTimeoutMs: number): Promise<DbusTransport> {\n\t\tconst [major = 0, minor = 0] = process.versions.node.split('.').map(Number);\n\t\tif (process.platform !== 'linux' || major < 24 || (major === 24 && minor < 13) || !process.getuid) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Linux and Node 24.13.0 or newer are required.');\n\t\ttry { await fs.access('/sys/fs/cgroup/cgroup.controllers'); }\n\t\tcatch (error) { throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'A cgroup v2 hierarchy is required.', {}, error); }\n\t\tlet transport: DbusTransport | undefined;\n\t\ttry {\n\t\t\ttransport = new DbusTransport(requestTimeoutMs);\n\t\t\tawait transport.invoke('AddMatch', 's', [\"type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.freedesktop.systemd1'\"], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus');\n\t\t\ttransport.owner = scalar(await transport.invoke('GetNameOwner', 's', ['org.freedesktop.systemd1'], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tif (!transport.internals._connection.stream.supportsUnixFd) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The user bus transport cannot pass Unix file descriptors.', { reason: 'unix-fd-unavailable' });\n\t\t\tconst managerProperties = properties(await transport.invoke('GetAll', 's', [managerInterface], false, transport.owner, managerPath, 'org.freedesktop.DBus.Properties'));\n\t\t\tif (typeof managerProperties.Version !== 'string' || Number.parseInt(managerProperties.Version, 10) < 257 || !/^\\d/.test(managerProperties.Version)) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Systemd 257 or newer is required.', { reason: 'systemd-version' });\n\t\t\tconst machineId = scalar(await transport.invoke('GetMachineId', '', [], false, transport.owner, managerPath, 'org.freedesktop.DBus.Peer'));\n\t\t\tconst busId = scalar(await transport.invoke('GetId', '', [], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tconst bootId = (await fs.readFile('/proc/sys/kernel/random/boot_id', 'utf8')).trim();\n\t\t\ttransport.boundIdentity = Object.freeze({ scope: 'user', uid: process.getuid(), machineId, bootId, busId, owner: transport.owner });\n\t\t\tawait transport.invoke('AddMatch', 's', [`type='signal',sender='${transport.owner}',path_namespace='${managerPath}'`], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus');\n\t\t\tawait transport.invoke('Subscribe', '', [], false);\n\t\t\tconst currentOwner = scalar(await transport.invoke('GetNameOwner', 's', ['org.freedesktop.systemd1'], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tif (currentOwner !== transport.owner) throw new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager changed during connection.');\n\t\t\treturn transport;\n\t\t} catch (error) {\n\t\t\ttransport?.close();\n\t\t\tif (error instanceof errors.TaskError) throw error;\n\t\t\tthrow new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager is unavailable.', {}, error);\n\t\t}\n\t}\n\n\t/** Return the frozen manager identity rather than a mutable transport object. */\n\tget identity(): types.ManagerIdentity {\n\t\tif (!this.boundIdentity) throw new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager identity has not been established.');\n\t\treturn this.boundIdentity;\n\t}\n\n\t/** Closed connections never fall back to a fresh bus or another process runner. */\n\tassertOpen(): void {\n\t\tif (this.failure) throw this.failure;\n\t}\n\n\t/** Wake observers without letting a callback disrupt the transport's message dispatch. */\n\tprivate notify(unitName?: string): void {\n\t\tfor (const listener of this.listeners) {\n\t\t\ttry { listener(unitName); } catch { /* Periodic reconciliation also covers a failed observer callback. */ }\n\t\t}\n\t}\n\n\t/** Process only manager identity changes and relevant unit/job/property notifications. */\n\tprivate handleMessage(message: dbus.Message): void {\n\t\tif (message.type !== dbus.MessageType.SIGNAL) return;\n\t\tif (message.sender === 'org.freedesktop.DBus' && message.member === 'NameOwnerChanged' && message.body[0] === 'org.freedesktop.systemd1' && this.owner && message.body[2] !== this.owner) {\n\t\t\tthis.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager identity changed.'));\n\t\t\treturn;\n\t\t}\n\t\tif (message.sender !== this.owner) return;\n\t\tlet name: unknown;\n\t\tif (message.member === 'UnitNew' || message.member === 'UnitRemoved') name = message.body[0];\n\t\telse if (message.member === 'JobRemoved' || message.member === 'JobNew') name = message.body[2];\n\t\telse if (message.interface === 'org.freedesktop.DBus.Properties' && message.member === 'PropertiesChanged') {\n\t\t\tconst encoded = message.path?.match(/^\\/org\\/freedesktop\\/systemd1\\/unit\\/(.+)$/)?.[1];\n\t\t\tif (encoded) name = encoded.replace(/_([0-9a-f]{2})/g, /** Decode systemd object-path escaping for notification routing. */ (_match, hex: string) => String.fromCharCode(Number.parseInt(hex, 16)));\n\t\t}\n\t\tif (typeof name === 'string') {\n\t\t\tthis.notify(name);\n\t\t\tif (name.endsWith('-retention.service')) this.notify(name.replace(/-retention\\.service$/, '.service'));\n\t\t\tif (name.endsWith('-guardian.service')) this.notify(name.replace(/-guardian\\.service$/, '.service'));\n\t\t}\n\t}\n\n\t/** Close queued native writes before callers can release descriptors from pending requests. */\n\tprivate fail(failure: errors.TaskError): void {\n\t\tif (this.failure) return;\n\t\tthis.failure = failure;\n\t\ttry { this.internals._connection.stream.destroy(); } catch { /* Local resource teardown is best-effort and never retried by descriptor number. */ }\n\t\tfor (const [serial, request] of this.pending) {\n\t\t\tclearTimeout(request.timer);\n\t\t\tdelete this.internals._methodReturnHandlers[serial];\n\t\t\trequest.reject(request.mutation\n\t\t\t\t? new errors.TaskError('UNKNOWN_MUTATION_OUTCOME', 'The manager mutation outcome is unknown.', { operation: request.operation, mutationOutcome: 'unknown' }, failure)\n\t\t\t\t: failure);\n\t\t}\n\t\tthis.pending.clear();\n\t\tthis.notify();\n\t}\n\n\t/** Distinguish a confirmed error reply from an uncertain delivery or connection failure. */\n\tprivate translate(error: unknown, operation: string, mutation: boolean): errors.TaskError {\n\t\tconst name = errors.dbusErrorName(error);\n\t\tif (name && !uncertainReplies.has(name)) {\n\t\t\tconst denied = name === 'org.freedesktop.DBus.Error.AccessDenied' || name === 'org.freedesktop.DBus.Error.AuthFailed' || name === 'org.freedesktop.systemd1.AccessDenied' || name === 'org.freedesktop.DBus.Error.InteractiveAuthorizationRequired';\n\t\t\tconst unavailable = name === 'org.freedesktop.DBus.Error.NameHasNoOwner' || name === 'org.freedesktop.DBus.Error.ServiceUnknown';\n\t\t\treturn new errors.TaskError(denied ? 'PERMISSION_DENIED' : unavailable ? 'MANAGER_UNAVAILABLE' : mutation && operation === 'StartTransientUnit' ? 'START_REJECTED' : 'RESULT_UNAVAILABLE', 'The manager rejected the request.', { operation, ...(mutation ? { mutationOutcome: 'rejected' as const } : {}), reason: name }, error);\n\t\t}\n\t\treturn new errors.TaskError(mutation ? 'UNKNOWN_MUTATION_OUTCOME' : 'MANAGER_UNAVAILABLE', mutation ? 'The manager mutation outcome is unknown.' : 'The manager request failed.', { operation, ...(mutation ? { mutationOutcome: 'unknown' as const } : {}) }, error);\n\t}\n\n\t/** Send exactly once, with an adapter-owned timeout and cleanup of abandoned reply handlers. */\n\tprivate async invoke(member: string, signature: string, body: unknown[], mutation: boolean, destination = this.owner ?? 'org.freedesktop.systemd1', objectPath = managerPath, iface = managerInterface): Promise<readonly unknown[]> {\n\t\ttry { this.assertOpen(); }\n\t\tcatch (error) {\n\t\t\tif (mutation && error instanceof errors.TaskError) throw new errors.TaskError(error.code, error.message, { operation: member, mutationOutcome: 'not-submitted' }, error);\n\t\t\tthrow error;\n\t\t}\n\t\tconst message = new dbus.Message({ destination, path: objectPath, interface: iface, member, signature, body });\n\t\tmessage.serial = this.bus.newSerial();\n\t\tconst serial = message.serial;\n\t\treturn await new Promise<readonly unknown[]>(/** Own the deadline and settlement of exactly one D-Bus request. */ (resolve, reject) => {\n\t\t\tconst timer = setTimeout(/** Invalidate the connection before releasing possibly queued descriptors. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager request deadline expired.', { operation: member, reason: 'request-timeout' })), this.requestTimeoutMs);\n\t\t\tthis.pending.set(serial, { operation: member, mutation, timer, reject });\n\t\t\tvoid this.bus.call(message).then(/** Settle only a still-owned request and discard late replies. */ reply => {\n\t\t\t\tif (!this.pending.delete(serial)) return;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tif (reply) resolve(reply.body as unknown[]);\n\t\t\t\telse reject(new errors.TaskError(mutation ? 'UNKNOWN_MUTATION_OUTCOME' : 'RESULT_UNAVAILABLE', 'The manager returned no reply.', { operation: member, ...(mutation ? { mutationOutcome: 'unknown' as const } : {}) }));\n\t\t\t}, /** Translate delivery evidence and clean abandoned upstream reply handlers. */ error => {\n\t\t\t\tif (!this.pending.delete(serial)) return;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tdelete this.internals._methodReturnHandlers[serial];\n\t\t\t\tconst translated = this.translate(error, member, mutation);\n\t\t\t\tif (translated.code === 'MANAGER_UNAVAILABLE' || translated.code === 'UNKNOWN_MUTATION_OUTCOME') this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager connection is no longer reliable.', {}, error));\n\t\t\t\treject(translated);\n\t\t\t});\n\t\t});\n\t}\n\n\t/** A missing object and a disconnected manager have deliberately different outcomes. */\n\tasync readUnit(name: string): Promise<RawUnit | null> {\n\t\ttry {\n\t\t\tconst objectPath = scalar(await this.invoke('GetUnit', 's', [name], false));\n\t\t\tconst values = properties(await this.invoke('GetAll', 's', [''], false, this.owner, objectPath, 'org.freedesktop.DBus.Properties'));\n\t\t\tif (values.LoadState === 'not-found' && values.Transient !== true) return null;\n\t\t\treturn { properties: values };\n\t\t} catch (error) {\n\t\t\tif (error instanceof errors.TaskError && error.details.reason && absenceReplies.has(error.details.reason)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/** Read inherited names immediately before start, keeping manager configuration untouched. */\n\tasync readEnvironment(): Promise<readonly string[]> {\n\t\tconst values = properties(await this.invoke('GetAll', 's', [managerInterface], false, this.owner, managerPath, 'org.freedesktop.DBus.Properties'));\n\t\tif (!Array.isArray(values.Environment) || !values.Environment.every(/** Reject malformed manager environment entries before property mapping. */ value => typeof value === 'string')) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager environment is unavailable.');\n\t\treturn values.Environment as string[];\n\t}\n\n\t/** Job mode fail prevents collision-driven replacement; the user command is never retried. */\n\tasync start(name: string, values: readonly Property[], auxiliaries: readonly AuxiliaryUnit[]): Promise<string> {\n\t\treturn scalar(await this.invoke('StartTransientUnit', 'ssa(sv)a(sa(sv))', [name, 'fail', wireProperties(values), auxiliaries.map(/** Zachová pořadí topology codecu v jediné transakci. */ unit => [unit.name, wireProperties(unit.properties)])], true));\n\t}\n\n\t/** Replace only stop/start jobs as needed to stop; this never invokes a restart operation. */\n\tasync stop(name: string): Promise<string> {\n\t\treturn scalar(await this.invoke('StopUnit', 'ss', [name, 'replace'], true));\n\t}\n\n\t/** Reset a completed own record; callers must verify ownership before reaching this method. */\n\tasync resetFailed(name: string): Promise<void> {\n\t\tawait this.invoke('ResetFailedUnit', 's', [name], true);\n\t}\n\n\t/** Multiple waiters share one signal subscription and remove their own listeners only. */\n\tonChange(listener: (unitName?: string) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn /** Remove only this observer from shared adapter notifications. */ () => { this.listeners.delete(listener); };\n\t}\n\n\t/** Disconnect is entirely local and deliberately does not call StopUnit. */\n\tclose(): void {\n\t\tthis.fail(new errors.TaskError('DISCONNECTED', 'The task client is disconnected.'));\n\t\tthis.listeners.clear();\n\t}\n}\n","/** A deliberately small allowlist of properties that cannot replace task lifecycle policy. */\nexport interface SystemdProperty {\n\t/** The resource weight to pass to the transient service. */\n\treadonly name: 'CPUWeight' | 'IOWeight';\n\t/** The systemd D-Bus signature, independent of the transport implementation. */\n\treadonly signature: 't';\n\t/** An integer resource weight from 1 through 10000. */\n\treadonly value: number;\n}\n\n/** A command specification suitable for serialization before any attempt to execute it. */\nexport interface TaskSpec {\n\t/** Absolute executable path; no PATH lookup or shell is performed. */\n\treadonly executable: string;\n\t/** Literal arguments excluding argv[0], which is the executable path. */\n\treadonly argv: readonly string[];\n\t/** Absolute working directory, which must already exist at execution time. */\n\treadonly cwd: string;\n\t/** Explicit environment entries; systemd may add its own execution metadata. */\n\treadonly env: Readonly<Record<string, string>>;\n\t/** Positive integer milliseconds, or null to explicitly disable the runtime limit. */\n\treadonly runtimeLimitMs: number | null;\n\t/** Positive integer milliseconds before manager-owned SIGKILL escalation. */\n\treadonly stopGraceMs: number;\n\t/** Optional resource weights; all other low-level properties are reserved. */\n\treadonly systemdProperties?: readonly SystemdProperty[];\n}\n\n/** Common serializable ownership evidence, without environment or command arguments. */\nexport interface TaskIdentity {\n\t/** Serialization version understood by this library. */\n\treadonly version: 1;\n\t/** Random UUID generated before submission. */\n\treadonly id: string;\n\t/** Unique transient service name derived from the ID. */\n\treadonly unitName: string;\n\t/** Unique auxiliary service name derived from the same ID. */\n\treadonly retentionUnitName: string;\n\t/** V1 supports the local user manager only. */\n\treadonly managerScope: 'user';\n\t/** SHA-256 fingerprint of the normalized task specification. */\n\treadonly fingerprint: string;\n}\n\n/** A prepared intention; saving it does not imply that execution was attempted. */\nexport interface TaskIntent extends TaskIdentity {\n\t/** Absence of the observed discriminator keeps both serialized intent families disjoint. */\n\treadonly kind?: never;\n\t/** Execution configuration, potentially containing secrets; store accordingly. */\n\treadonly spec: TaskSpec;\n}\n\n/** Identity of the specific environment in which a task was observed. */\nexport interface ManagerIdentity {\n\t/** Manager privilege scope; system-manager references are not supported in V1. */\n\treadonly scope: 'user';\n\t/** Effective local UID whose user bus owns the task. */\n\treadonly uid: number;\n\t/** Machine identity reported by the manager's D-Bus peer. */\n\treadonly machineId: string;\n\t/** Local kernel boot identity, preventing cross-boot adoption. */\n\treadonly bootId: string;\n\t/** Unique identity of the user message bus. */\n\treadonly busId: string;\n\t/** Unique bus owner of org.freedesktop.systemd1 at connection time. */\n\treadonly owner: string;\n}\n\n/** An observed pair of unit instances; null IDs explicitly mean incomplete evidence. */\nexport interface TaskReference extends TaskIdentity {\n\t/** Absence of the observed discriminator prevents cross-topology client calls. */\n\treadonly kind?: never;\n\t/** The manager in which the reference was obtained. */\n\treadonly manager: ManagerIdentity;\n\t/** Main service invocation, or null if no invocation was observed. */\n\treadonly invocationId: string | null;\n\t/** Auxiliary invocation, or null if it was absent or never invoked. */\n\treadonly retentionInvocationId: string | null;\n}\n\n/** Input from /dev/null, an existing file, or a caller-owned descriptor. */\nexport type TaskInput =\n\t| { /** Explicit EOF input. */ readonly type: 'null' }\n\t| { /** Open a file before submission. */ readonly type: 'file'; /** Absolute existing input path. */ readonly path: string }\n\t| { /** Borrow a descriptor without closing it. */ readonly type: 'fd'; /** Nonnegative Unix descriptor, held open until start settles. */ readonly fd: number };\n\n/** Output without decoding, in-memory capture, or automatic directory creation. */\nexport type TaskOutput =\n\t| { /** Explicitly discard output. */ readonly type: 'null' }\n\t| { /** Open an application-owned file before submission. */ readonly type: 'file'; /** Absolute output path. */ readonly path: string; /** Explicit append or truncate semantics. */ readonly mode: 'append' | 'truncate' }\n\t| { /** Borrow a descriptor without closing it. */ readonly type: 'fd'; /** Nonnegative Unix descriptor, held open until start settles. */ readonly fd: number };\n\n/** All standard descriptors are explicit and excluded from persistent task identities. */\nexport interface TaskIO {\n\t/** Input source; this library does not create an interactive terminal. */\n\treadonly stdin: TaskInput;\n\t/** Binary standard output destination. */\n\treadonly stdout: TaskOutput;\n\t/** Binary standard error destination. */\n\treadonly stderr: TaskOutput;\n}\n\n/** Explicit discard configuration for tasks whose output is not needed. */\nexport const nullIO: TaskIO = Object.freeze({\n\tstdin: Object.freeze({ type: 'null' as const }),\n\tstdout: Object.freeze({ type: 'null' as const }),\n\tstderr: Object.freeze({ type: 'null' as const }),\n});\n\n/** Whether the manager and cgroup provide evidence of finished descendant cleanup. */\nexport type CleanupState = 'pending' | 'complete' | 'incomplete' | 'unknown';\n\n/** Raw evidence retained by the specific service, with 64-bit values serialized as decimals. */\nexport interface TaskEvidence {\n\t/** Raw systemd Unit.ActiveState. */\n\treadonly activeState: string;\n\t/** Raw systemd Unit.SubState. */\n\treadonly subState: string;\n\t/** Raw systemd Service.Result, without inferred stop intent. */\n\treadonly systemdResult: string;\n\t/** CLD_* wait-status category reported by systemd. */\n\treadonly execMainCode: number;\n\t/** Exit code or signal number according to execMainCode. */\n\treadonly execMainStatus: number;\n\t/** Monotonic main-process start timestamp in microseconds; zero means absent. */\n\treadonly execMainStartUsec: string;\n\t/** Monotonic main-process exit timestamp in microseconds; zero means absent. */\n\treadonly execMainExitUsec: string;\n\t/** Retained active-entry evidence under Type=exec. */\n\treadonly activeEnterUsec: string;\n\t/** Current job ID, or zero when no job is pending. */\n\treadonly jobId: number;\n\t/** Manager-reported cgroup path, possibly empty after cleanup. */\n\treadonly controlGroup: string;\n\t/** Hierarchical cgroup population evidence; null when unavailable or unnecessary. */\n\treadonly cgroupPopulated: boolean | null;\n}\n\n/** A program failure is a normal result, distinct from a transport or observation error. */\nexport interface TaskResult {\n\t/** Classification based on execution and exit evidence, never just the numeric status. */\n\treadonly kind: 'exited' | 'signaled' | 'execution-failed' | 'not-executed' | 'unknown';\n\t/** Program or systemd execution status, present only for CLD_EXITED. */\n\treadonly exitCode: number | null;\n\t/** Signal number, present only for CLD_KILLED or CLD_DUMPED. */\n\treadonly signal: number | null;\n\t/** Whether Type=exec activation was confirmed by retained manager evidence. */\n\treadonly execution: 'confirmed' | 'not-confirmed';\n\t/** Raw systemd result; timeout can describe runtime, stop, or cleanup escalation. */\n\treadonly systemdResult: string;\n\t/** Cleanup must be checked independently of a successful main-process exit. */\n\treadonly cleanup: CleanupState;\n}\n\n/** A current state observation, not a durable event history. */\nexport interface TaskSnapshot {\n\t/** Reference captured from this observation. */\n\treadonly reference: TaskReference;\n\t/** Complete requires observed InvocationIDs for both task and retention service. */\n\treadonly identity: 'complete' | 'incomplete';\n\t/** Process phase; completed always requires confirmed cleanup. */\n\treadonly phase: 'starting' | 'running' | 'cleaning' | 'completed';\n\t/** Main PID is diagnostic only and never used as task identity. */\n\treadonly mainPid: number;\n\t/** True only for inactive/failed state without a pending job. */\n\treadonly managerTerminal: boolean;\n\t/** Current cleanup evidence. */\n\treadonly cleanup: CleanupState;\n\t/** Available main-exit or terminal evidence, possibly before cleanup finishes. */\n\treadonly result: TaskResult | null;\n\t/** Minimal raw properties needed to audit the classification. */\n\treadonly evidence: TaskEvidence;\n}\n\n/** Absence does not prove that a task never ran; incomplete retention is also explicit. */\nexport type LookupResult =\n\t| { /** Both observation and instance evidence are available. */ readonly status: 'found'; /** Reference from this read. */ readonly reference: TaskReference; /** Current task state. */ readonly snapshot: TaskSnapshot }\n\t| { /** No owned task or retention record was found in the reachable manager. */ readonly status: 'not-found'; /** Requested identity without secrets. */ readonly identity: TaskIdentity }\n\t| { /** Only the auxiliary record remains; the main result is unavailable. */ readonly status: 'incomplete'; /** Partial identity, safe to inspect and conservatively release. */ readonly reference: TaskReference };\n\n/** Start acceptance means the manager queued the creation transaction, not successful exec. */\nexport interface StartReceipt {\n\t/** Acknowledged by the manager; subsequent program failure is a separate result. */\n\treadonly outcome: 'accepted';\n\t/** Requested identity, which is already known before the call. */\n\treadonly identity: TaskIdentity;\n\t/** Manager that accepted the request. */\n\treadonly manager: ManagerIdentity;\n\t/** Diagnostic path of the accepted job; jobs are not durable identities. */\n\treadonly jobPath: string;\n}\n\n/** Local waiting controls; neither option changes manager-owned execution limits. */\nexport interface WaitOptions {\n\t/** Aborting affects this caller's wait only. */\n\treadonly signal?: AbortSignal;\n\t/** Positive integer local deadline, at most 2147483647 milliseconds. */\n\treadonly timeoutMs?: number;\n}\n\n/** Stop acceptance and optional completion waiting are separate stages. */\nexport interface StopOptions extends WaitOptions {\n\t/** When true, await terminal cleanup after manager acceptance. Defaults to false. */\n\treadonly wait?: boolean;\n}\n\n/** Local controls for the complete release sequence, independent of each D-Bus call. */\nexport interface ReleaseOptions extends WaitOptions {\n\t/** Total local release deadline including queueing; defaults to 5000 milliseconds. */\n\treadonly timeoutMs?: number;\n}\n\n/** Successful stop submission or an already-completed instance. */\nexport interface StopReceipt {\n\t/** Already-completed does not submit any stop request. */\n\treadonly outcome: 'accepted' | 'already-completed';\n\t/** The exact reference checked before stopping. */\n\treadonly reference: TaskReference;\n\t/** Accepted stop job, or null for an already-completed instance. */\n\treadonly jobPath: string | null;\n\t/** Present when completion was awaited or already known. */\n\treadonly completion: TaskSnapshot | null;\n}\n\n/** Explicit release affects manager retention, never application log files. */\nexport interface ReleaseReceipt {\n\t/** The auxiliary retention is no longer active. */\n\treadonly released: true;\n\t/** Both identities were already absent when release began. */\n\treadonly alreadyReleased: boolean;\n\t/** Whether both records were already garbage-collected at the final observation. */\n\treadonly collected: boolean;\n}\n\n/** Stable categories for callers making recovery decisions. */\nexport type ErrorCode = 'INVALID_INPUT' | 'UNSUPPORTED_ENVIRONMENT' | 'PERMISSION_DENIED'\n\t| 'MANAGER_UNAVAILABLE' | 'IDENTITY_CONFLICT' | 'START_REJECTED' | 'UNKNOWN_MUTATION_OUTCOME'\n\t| 'RESULT_UNAVAILABLE' | 'TASK_RUNNING' | 'WAIT_ABORTED' | 'WAIT_TIMEOUT' | 'DISCONNECTED'\n\t| 'OBSERVATION_FAILED';\n\n/** Metadata safe for default error formatting and diagnostic output. */\nexport interface ErrorDetails {\n\t/** Public or transport operation where the failure was observed. */\n\treadonly operation?: string;\n\t/** Known delivery state; an unknown result must never authorize automatic retry. */\n\treadonly mutationOutcome?: 'not-submitted' | 'rejected' | 'accepted' | 'unknown';\n\t/** Acknowledged cleanup calls before a release error; may be positive even when a later call is unknown. */\n\treadonly acceptedCleanupMutations?: number;\n\t/** Stable detail such as unit-not-found or incomplete-identity. */\n\treadonly reason?: string;\n\t/** Random task ID only, never the serialized intent. */\n\treadonly taskId?: string;\n}\n\n/** A redacted event correlated centrally with a task or connection flow. */\nexport interface DiagnosticEvent {\n\t/** Stable event name; no command, environment, or output content. */\n\treadonly event: string;\n\t/** Immutable correlation context captured at emission time. */\n\treadonly context: {\n\t\t/** Connection flow shared by this client's operations. */\n\t\treadonly connection: { /** Random local connection ID. */ readonly id: string };\n\t\t/** Task scope, present for task operations. */\n\t\treadonly task?: { /** Prepared task UUID. */ readonly id: string; /** Derived unit name. */ readonly unitName: string };\n\t};\n\t/** Stable failure category, when applicable. */\n\treadonly code?: ErrorCode;\n}\n\n/** Explicit user-manager connection options; no automatic provisioning is performed. */\nexport interface ConnectOptions {\n\t/** Positive local D-Bus call deadline, at most 2147483647 ms; defaults to 5000. */\n\treadonly requestTimeoutMs?: number;\n\t/** Optional redacted event sink; sync throws and async rejections are isolated, never awaited. */\n\treadonly onDiagnostic?: (event: DiagnosticEvent) => void;\n}\n\n/** The local client owns observation resources; systemd owns the task processes. */\nexport interface TaskClient {\n\t/** Bound manager identity for persistence and diagnosis. */\n\treadonly manager: ManagerIdentity;\n\t/** Submit exactly one creation attempt for a locally validated intention. */\n\tstart(intent: TaskIntent, io: TaskIO): Promise<StartReceipt>;\n\t/** Read existing ownership evidence without starting or retrying anything. */\n\tlookup(target: TaskIntent | TaskReference): Promise<LookupResult>;\n\t/** Read the exact referenced instance or fail with explicit observation unavailability. */\n\tinspect(reference: TaskReference): Promise<TaskSnapshot>;\n\t/** Wait for cleanup, or return explicit incomplete cleanup on terminal manager failure. */\n\twait(target: TaskIntent | TaskReference, options?: WaitOptions): Promise<TaskSnapshot>;\n\t/** Ask the manager to stop the referenced cgroup, optionally awaiting cleanup. */\n\tstop(reference: TaskReference, options?: StopOptions): Promise<StopReceipt>;\n\t/** Release only completed owned retention, preserving application files. */\n\trelease(reference: TaskReference, options?: ReleaseOptions): Promise<ReleaseReceipt>;\n\t/** Close local connections and observers without stopping any task. */\n\tdisconnect(): Promise<void>;\n}\n"],"mappings":"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,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN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A,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAA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","names":["b","d","e","c","a","h","j","k","i","g","l","f","exports","module","MessageType","JSBI","exports","module","Variant","exports","module","path","exports","module","Message","path","exports","module","c","exports","module","Variant","property","properties","method","signal","exports","module","exports","module","fs","Variant","Message","constants","path","properties","exports","module","Message","path","exports","exports","module","exports","module","XMLDOMImplementation","version","exports","module","XMLDOMErrorHandler","exports","module","XMLDOMStringList","exports","module","XMLDOMConfiguration","exports","module","exports","module","XMLAttribute","exports","module","XMLNamedNodeMap","exports","module","XMLElement","exports","module","XMLCharacterData","exports","module","XMLCData","exports","module","XMLComment","exports","module","XMLDeclaration","version","exports","module","XMLDTDAttList","exports","module","XMLDTDEntity","exports","module","XMLDTDElement","exports","module","XMLDTDNotation","exports","module","XMLDocType","exports","module","XMLRaw","exports","module","XMLText","exports","module","XMLProcessingInstruction","exports","module","XMLDummy","exports","module","XMLNodeList","exports","module","exports","module","XMLNode","version","exports","module","XMLStringifier","exports","module","exports","module","XMLWriterBase","exports","module","XMLStringWriter","exports","module","XMLDocument","exports","module","XMLDocumentCB","version","exports","module","XMLStreamWriter","exports","module","exports","exports","s","exports","exports","exports","processors","process","err","resolve","exports","exports","module","exports","module","Message","path","resolve","err","xml","exports","module","constants","Message","path","resolve","children","exports","module","Buffer","exports","module","exports","Buffer","exports","module","exports","module","exports","Buffer","JSBI","exports","module","exports","module","JSBI","exports","module","exports","module","Buffer","constants","exports","module","Buffer","exports","module","Buffer","crypto","fs","path","constants","stat","err","exports","module","fs","uuid","err","exports","module","Variant","message","exports","module","exports","module","i","exports","module","reemit","exports","module","exports","module","exports","module","exports","module","streams","exports","err","Buffer","from","exports","module","Message","message","exports","module","constants","Variant","Message","crypto","version","resolve","identity","identity","stat","channel","identity","resolve","fs","path","crypto","value","properties","property","fingerprint","identity","identityOnly","marker","fs","path","channel","string","properties","identity","reference","kind","process","stat","creationProperties","marker","includes","properties","assertOwnership","identity","assertReference","reference","identityOnly","snapshot","identity","assertOwnership","assertReference","identityOnly","reference","snapshot","creationProperties","fs","resolve","identity","snapshot","reference"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/jsbi/dist/jsbi.mjs","../node_modules/dbus-next/lib/constants.js","../node_modules/dbus-next/lib/variant.js","../node_modules/dbus-next/lib/validators.js","../node_modules/dbus-next/lib/message-type.js","../node_modules/dbus-next/lib/signature.js","../node_modules/dbus-next/lib/service/interface.js","../node_modules/dbus-next/lib/errors.js","../node_modules/dbus-next/lib/service/handlers.js","../node_modules/dbus-next/lib/service/object.js","../node_modules/xml2js/lib/defaults.js","../node_modules/xmlbuilder/lib/Utility.js","../node_modules/xmlbuilder/lib/XMLDOMImplementation.js","../node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js","../node_modules/xmlbuilder/lib/XMLDOMStringList.js","../node_modules/xmlbuilder/lib/XMLDOMConfiguration.js","../node_modules/xmlbuilder/lib/NodeType.js","../node_modules/xmlbuilder/lib/XMLAttribute.js","../node_modules/xmlbuilder/lib/XMLNamedNodeMap.js","../node_modules/xmlbuilder/lib/XMLElement.js","../node_modules/xmlbuilder/lib/XMLCharacterData.js","../node_modules/xmlbuilder/lib/XMLCData.js","../node_modules/xmlbuilder/lib/XMLComment.js","../node_modules/xmlbuilder/lib/XMLDeclaration.js","../node_modules/xmlbuilder/lib/XMLDTDAttList.js","../node_modules/xmlbuilder/lib/XMLDTDEntity.js","../node_modules/xmlbuilder/lib/XMLDTDElement.js","../node_modules/xmlbuilder/lib/XMLDTDNotation.js","../node_modules/xmlbuilder/lib/XMLDocType.js","../node_modules/xmlbuilder/lib/XMLRaw.js","../node_modules/xmlbuilder/lib/XMLText.js","../node_modules/xmlbuilder/lib/XMLProcessingInstruction.js","../node_modules/xmlbuilder/lib/XMLDummy.js","../node_modules/xmlbuilder/lib/XMLNodeList.js","../node_modules/xmlbuilder/lib/DocumentPosition.js","../node_modules/xmlbuilder/lib/XMLNode.js","../node_modules/xmlbuilder/lib/XMLStringifier.js","../node_modules/xmlbuilder/lib/WriterState.js","../node_modules/xmlbuilder/lib/XMLWriterBase.js","../node_modules/xmlbuilder/lib/XMLStringWriter.js","../node_modules/xmlbuilder/lib/XMLDocument.js","../node_modules/xmlbuilder/lib/XMLDocumentCB.js","../node_modules/xmlbuilder/lib/XMLStreamWriter.js","../node_modules/xmlbuilder/lib/index.js","../node_modules/xml2js/lib/builder.js","../node_modules/sax/lib/sax.js","../node_modules/xml2js/lib/bom.js","../node_modules/xml2js/lib/processors.js","../node_modules/xml2js/lib/parser.js","../node_modules/xml2js/lib/xml2js.js","../node_modules/dbus-next/lib/client/proxy-interface.js","../node_modules/dbus-next/lib/client/proxy-object.js","../node_modules/dbus-next/lib/bus.js","../node_modules/safe-buffer/index.js","../node_modules/@nornagon/put/index.js","../node_modules/dbus-next/lib/align.js","../node_modules/long/src/long.js","../node_modules/dbus-next/lib/library-options.js","../node_modules/dbus-next/lib/marshallers.js","../node_modules/dbus-next/lib/marshall.js","../node_modules/dbus-next/lib/dbus-buffer.js","../node_modules/dbus-next/lib/header-signature.json","../node_modules/dbus-next/lib/message.js","../node_modules/dbus-next/lib/readline.js","../node_modules/dbus-next/lib/handshake.js","../node_modules/dbus-next/lib/address-x11.js","../node_modules/dbus-next/lib/marshall-compat.js","../node_modules/through/index.js","../node_modules/from/index.js","../node_modules/duplexer/index.js","../node_modules/map-stream/index.js","../node_modules/pause-stream/index.js","../node_modules/split/index.js","../node_modules/stream-combiner/index.js","../node_modules/event-stream/index.js","../node_modules/dbus-next/lib/connection.js","../node_modules/dbus-next/index.js","../src/runtime.ts","../src/client.ts","../src/errors.ts","../src/waiting.ts","../src/client-core.ts","../src/diagnostics.ts","../src/io.ts","../src/observed-finalization.ts","../src/observed-validation.ts","../src/validation.ts","../src/systemd.ts","../src/observed-framing.ts","../src/observed-protocol.ts","../src/observed-systemd.ts","../src/observed-operations.ts","../src/transport.ts","../src/types.ts"],"sourcesContent":["class JSBI extends Array{constructor(a,b){if(a>JSBI.__kMaxLength)throw new RangeError(\"Maximum BigInt size exceeded\");super(a),this.sign=b}static BigInt(a){var b=Math.floor,c=Number.isFinite;if(\"number\"==typeof a){if(0===a)return JSBI.__zero();if((0|a)===a)return 0>a?JSBI.__oneDigit(-a,!0):JSBI.__oneDigit(a,!1);if(!c(a)||b(a)!==a)throw new RangeError(\"The number \"+a+\" cannot be converted to BigInt because it is not an integer\");return JSBI.__fromDouble(a)}if(\"string\"==typeof a){const b=JSBI.__fromString(a);if(null===b)throw new SyntaxError(\"Cannot convert \"+a+\" to a BigInt\");return b}if(\"boolean\"==typeof a)return!0===a?JSBI.__oneDigit(1,!1):JSBI.__zero();if(\"object\"==typeof a){if(a.constructor===JSBI)return a;const b=JSBI.__toPrimitive(a);return JSBI.BigInt(b)}throw new TypeError(\"Cannot convert \"+a+\" to a BigInt\")}toDebugString(){const a=[\"BigInt[\"];for(const b of this)a.push((b?(b>>>0).toString(16):b)+\", \");return a.push(\"]\"),a.join(\"\")}toString(a=10){if(2>a||36<a)throw new RangeError(\"toString() radix argument must be between 2 and 36\");return 0===this.length?\"0\":0==(a&a-1)?JSBI.__toStringBasePowerOfTwo(this,a):JSBI.__toStringGeneric(this,a,!1)}static toNumber(a){var b=Math.clz32;const c=a.length;if(0===c)return 0;if(1===c){const b=a.__unsignedDigit(0);return a.sign?-b:b}const d=a.__digit(c-1),e=b(d),f=32*c-e;if(1024<f)return a.sign?-Infinity:1/0;let g=f-1,h=d,i=c-1;const j=e+1;let k=32===j?0:h<<j;k>>>=12;const l=j-12;let m=12<=j?0:h<<20+j,n=20+j;0<l&&0<i&&(i--,h=a.__digit(i),k|=h>>>32-l,m=h<<l,n=l),0<n&&0<i&&(i--,h=a.__digit(i),m|=h>>>32-n,n-=32);const o=JSBI.__decideRounding(a,n,i,h);if((1===o||0===o&&1==(1&m))&&(m=m+1>>>0,0==m&&(k++,0!=k>>>20&&(k=0,g++,1023<g))))return a.sign?-Infinity:1/0;const p=a.sign?-2147483648:0;return g=g+1023<<20,JSBI.__kBitConversionInts[1]=p|g|k,JSBI.__kBitConversionInts[0]=m,JSBI.__kBitConversionDouble[0]}static unaryMinus(a){if(0===a.length)return a;const b=a.__copy();return b.sign=!a.sign,b}static bitwiseNot(a){return a.sign?JSBI.__absoluteSubOne(a).__trim():JSBI.__absoluteAddOne(a,!0)}static exponentiate(a,b){if(b.sign)throw new RangeError(\"Exponent must be positive\");if(0===b.length)return JSBI.__oneDigit(1,!1);if(0===a.length)return a;if(1===a.length&&1===a.__digit(0))return a.sign&&0==(1&b.__digit(0))?JSBI.unaryMinus(a):a;if(1<b.length)throw new RangeError(\"BigInt too big\");let c=b.__unsignedDigit(0);if(1===c)return a;if(c>=JSBI.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");if(1===a.length&&2===a.__digit(0)){const b=1+(c>>>5),d=a.sign&&0!=(1&c),e=new JSBI(b,d);e.__initializeDigits();const f=1<<(31&c);return e.__setDigit(b-1,f),e}let d=null,e=a;for(0!=(1&c)&&(d=a),c>>=1;0!==c;c>>=1)e=JSBI.multiply(e,e),0!=(1&c)&&(null===d?d=e:d=JSBI.multiply(d,e));return d}static multiply(a,b){if(0===a.length)return a;if(0===b.length)return b;let c=a.length+b.length;32<=a.__clzmsd()+b.__clzmsd()&&c--;const d=new JSBI(c,a.sign!==b.sign);d.__initializeDigits();for(let c=0;c<a.length;c++)JSBI.__multiplyAccumulate(b,a.__digit(c),d,c);return d.__trim()}static divide(a,b){if(0===b.length)throw new RangeError(\"Division by zero\");if(0>JSBI.__absoluteCompare(a,b))return JSBI.__zero();const c=a.sign!==b.sign,d=b.__unsignedDigit(0);let e;if(1===b.length&&65535>=d){if(1===d)return c===a.sign?a:JSBI.unaryMinus(a);e=JSBI.__absoluteDivSmall(a,d,null)}else e=JSBI.__absoluteDivLarge(a,b,!0,!1);return e.sign=c,e.__trim()}static remainder(a,b){if(0===b.length)throw new RangeError(\"Division by zero\");if(0>JSBI.__absoluteCompare(a,b))return a;const c=b.__unsignedDigit(0);if(1===b.length&&65535>=c){if(1===c)return JSBI.__zero();const b=JSBI.__absoluteModSmall(a,c);return 0===b?JSBI.__zero():JSBI.__oneDigit(b,a.sign)}const d=JSBI.__absoluteDivLarge(a,b,!1,!0);return d.sign=a.sign,d.__trim()}static add(a,b){const c=a.sign;return c===b.sign?JSBI.__absoluteAdd(a,b,c):0<=JSBI.__absoluteCompare(a,b)?JSBI.__absoluteSub(a,b,c):JSBI.__absoluteSub(b,a,!c)}static subtract(a,b){const c=a.sign;return c===b.sign?0<=JSBI.__absoluteCompare(a,b)?JSBI.__absoluteSub(a,b,c):JSBI.__absoluteSub(b,a,!c):JSBI.__absoluteAdd(a,b,c)}static leftShift(a,b){return 0===b.length||0===a.length?a:b.sign?JSBI.__rightShiftByAbsolute(a,b):JSBI.__leftShiftByAbsolute(a,b)}static signedRightShift(a,b){return 0===b.length||0===a.length?a:b.sign?JSBI.__leftShiftByAbsolute(a,b):JSBI.__rightShiftByAbsolute(a,b)}static unsignedRightShift(){throw new TypeError(\"BigInts have no unsigned right shift; use >> instead\")}static lessThan(a,b){return 0>JSBI.__compareToBigInt(a,b)}static lessThanOrEqual(a,b){return 0>=JSBI.__compareToBigInt(a,b)}static greaterThan(a,b){return 0<JSBI.__compareToBigInt(a,b)}static greaterThanOrEqual(a,b){return 0<=JSBI.__compareToBigInt(a,b)}static equal(a,b){if(a.sign!==b.sign)return!1;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a.__digit(c)!==b.__digit(c))return!1;return!0}static bitwiseAnd(a,b){var c=Math.max;if(!a.sign&&!b.sign)return JSBI.__absoluteAnd(a,b).__trim();if(a.sign&&b.sign){const d=c(a.length,b.length)+1;let e=JSBI.__absoluteSubOne(a,d);const f=JSBI.__absoluteSubOne(b);return e=JSBI.__absoluteOr(e,f,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}return a.sign&&([a,b]=[b,a]),JSBI.__absoluteAndNot(a,JSBI.__absoluteSubOne(b)).__trim()}static bitwiseXor(a,b){var c=Math.max;if(!a.sign&&!b.sign)return JSBI.__absoluteXor(a,b).__trim();if(a.sign&&b.sign){const d=c(a.length,b.length),e=JSBI.__absoluteSubOne(a,d),f=JSBI.__absoluteSubOne(b);return JSBI.__absoluteXor(e,f,e).__trim()}const d=c(a.length,b.length)+1;a.sign&&([a,b]=[b,a]);let e=JSBI.__absoluteSubOne(b,d);return e=JSBI.__absoluteXor(e,a,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}static bitwiseOr(a,b){var c=Math.max;const d=c(a.length,b.length);if(!a.sign&&!b.sign)return JSBI.__absoluteOr(a,b).__trim();if(a.sign&&b.sign){let c=JSBI.__absoluteSubOne(a,d);const e=JSBI.__absoluteSubOne(b);return c=JSBI.__absoluteAnd(c,e,c),JSBI.__absoluteAddOne(c,!0,c).__trim()}a.sign&&([a,b]=[b,a]);let e=JSBI.__absoluteSubOne(b,d);return e=JSBI.__absoluteAndNot(e,a,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}static ADD(a,b){if(a=JSBI.__toPrimitive(a),b=JSBI.__toPrimitive(b),\"string\"==typeof a)return\"string\"!=typeof b&&(b=b.toString()),a+b;if(\"string\"==typeof b)return a.toString()+b;if(a=JSBI.__toNumeric(a),b=JSBI.__toNumeric(b),JSBI.__isBigInt(a)&&JSBI.__isBigInt(b))return JSBI.add(a,b);if(\"number\"==typeof a&&\"number\"==typeof b)return a+b;throw new TypeError(\"Cannot mix BigInt and other types, use explicit conversions\")}static LT(a,b){return JSBI.__compare(a,b,0)}static LE(a,b){return JSBI.__compare(a,b,1)}static GT(a,b){return JSBI.__compare(a,b,2)}static GE(a,b){return JSBI.__compare(a,b,3)}static EQ(a,b){for(;;){if(JSBI.__isBigInt(a))return JSBI.__isBigInt(b)?JSBI.equal(a,b):JSBI.EQ(b,a);if(\"number\"==typeof a){if(JSBI.__isBigInt(b))return JSBI.__equalToNumber(b,a);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"string\"==typeof a){if(JSBI.__isBigInt(b))return a=JSBI.__fromString(a),null!==a&&JSBI.equal(a,b);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"boolean\"==typeof a){if(JSBI.__isBigInt(b))return JSBI.__equalToNumber(b,+a);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"symbol\"==typeof a){if(JSBI.__isBigInt(b))return!1;if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"object\"==typeof a){if(\"object\"==typeof b&&b.constructor!==JSBI)return a==b;a=JSBI.__toPrimitive(a)}else return a==b}}static __zero(){return new JSBI(0,!1)}static __oneDigit(a,b){const c=new JSBI(1,b);return c.__setDigit(0,a),c}__copy(){const a=new JSBI(this.length,this.sign);for(let b=0;b<this.length;b++)a[b]=this[b];return a}__trim(){let a=this.length,b=this[a-1];for(;0===b;)a--,b=this[a-1],this.pop();return 0===a&&(this.sign=!1),this}__initializeDigits(){for(let a=0;a<this.length;a++)this[a]=0}static __decideRounding(a,b,c,d){if(0<b)return-1;let e;if(0>b)e=-b-1;else{if(0===c)return-1;c--,d=a.__digit(c),e=31}let f=1<<e;if(0==(d&f))return-1;if(f-=1,0!=(d&f))return 1;for(;0<c;)if(c--,0!==a.__digit(c))return 1;return 0}static __fromDouble(a){JSBI.__kBitConversionDouble[0]=a;const b=2047&JSBI.__kBitConversionInts[1]>>>20,c=b-1023,d=(c>>>5)+1,e=new JSBI(d,0>a);let f=1048575&JSBI.__kBitConversionInts[1]|1048576,g=JSBI.__kBitConversionInts[0];const h=20,i=31&c;let j,k=0;if(i<20){const a=h-i;k=a+32,j=f>>>a,f=f<<32-a|g>>>a,g<<=32-a}else if(i===20)k=32,j=f,f=g;else{const a=i-h;k=32-a,j=f<<a|g>>>32-a,f=g<<a}e.__setDigit(d-1,j);for(let b=d-2;0<=b;b--)0<k?(k-=32,j=f,f=g):j=0,e.__setDigit(b,j);return e.__trim()}static __isWhitespace(a){return!!(13>=a&&9<=a)||(159>=a?32==a:131071>=a?160==a||5760==a:196607>=a?(a&=131071,10>=a||40==a||41==a||47==a||95==a||4096==a):65279==a)}static __fromString(a,b=0){let c=0;const e=a.length;let f=0;if(f===e)return JSBI.__zero();let g=a.charCodeAt(f);for(;JSBI.__isWhitespace(g);){if(++f===e)return JSBI.__zero();g=a.charCodeAt(f)}if(43===g){if(++f===e)return null;g=a.charCodeAt(f),c=1}else if(45===g){if(++f===e)return null;g=a.charCodeAt(f),c=-1}if(0===b){if(b=10,48===g){if(++f===e)return JSBI.__zero();if(g=a.charCodeAt(f),88===g||120===g){if(b=16,++f===e)return null;g=a.charCodeAt(f)}else if(79===g||111===g){if(b=8,++f===e)return null;g=a.charCodeAt(f)}else if(66===g||98===g){if(b=2,++f===e)return null;g=a.charCodeAt(f)}}}else if(16===b&&48===g){if(++f===e)return JSBI.__zero();if(g=a.charCodeAt(f),88===g||120===g){if(++f===e)return null;g=a.charCodeAt(f)}}for(;48===g;){if(++f===e)return JSBI.__zero();g=a.charCodeAt(f)}const h=e-f;let i=JSBI.__kMaxBitsPerChar[b],j=JSBI.__kBitsPerCharTableMultiplier-1;if(h>1073741824/i)return null;const k=i*h+j>>>JSBI.__kBitsPerCharTableShift,l=new JSBI(k+31>>>5,!1),n=10>b?b:10,o=10<b?b-10:0;if(0==(b&b-1)){i>>=JSBI.__kBitsPerCharTableShift;const b=[],c=[];let d=!1;do{let h=0,j=0;for(;;){let b;if(g-48>>>0<n)b=g-48;else if((32|g)-97>>>0<o)b=(32|g)-87;else{d=!0;break}if(j+=i,h=h<<i|b,++f===e){d=!0;break}if(g=a.charCodeAt(f),32<j+i)break}b.push(h),c.push(j)}while(!d);JSBI.__fillFromParts(l,b,c)}else{l.__initializeDigits();let c=!1,h=0;do{let k=0,p=1;for(;;){let i;if(g-48>>>0<n)i=g-48;else if((32|g)-97>>>0<o)i=(32|g)-87;else{c=!0;break}const d=p*b;if(4294967295<d)break;if(p=d,k=k*b+i,h++,++f===e){c=!0;break}g=a.charCodeAt(f)}j=32*JSBI.__kBitsPerCharTableMultiplier-1;const q=i*h+j>>>JSBI.__kBitsPerCharTableShift+5;l.__inplaceMultiplyAdd(p,k,q)}while(!c)}for(;f!==e;){if(!JSBI.__isWhitespace(g))return null;g=a.charCodeAt(f++)}return 0!=c&&10!==b?null:(l.sign=-1==c,l.__trim())}static __fillFromParts(a,b,c){let d=0,e=0,f=0;for(let g=b.length-1;0<=g;g--){const h=b[g],i=c[g];e|=h<<f,f+=i,32===f?(a.__setDigit(d++,e),f=0,e=0):32<f&&(a.__setDigit(d++,e),f-=32,e=h>>>i-f)}if(0!==e){if(d>=a.length)throw new Error(\"implementation bug\");a.__setDigit(d++,e)}for(;d<a.length;d++)a.__setDigit(d,0)}static __toStringBasePowerOfTwo(a,b){var c=Math.clz32;const d=a.length;let e=b-1;e=(85&e>>>1)+(85&e),e=(51&e>>>2)+(51&e),e=(15&e>>>4)+(15&e);const f=e,g=b-1,h=a.__digit(d-1),i=c(h);let j=0|(32*d-i+f-1)/f;if(a.sign&&j++,268435456<j)throw new Error(\"string too long\");const k=Array(j);let l=j-1,m=0,n=0;for(let c=0;c<d-1;c++){const b=a.__digit(c),d=(m|b<<n)&g;k[l--]=JSBI.__kConversionChars[d];const e=f-n;for(m=b>>>e,n=32-e;n>=f;)k[l--]=JSBI.__kConversionChars[m&g],m>>>=f,n-=f}const o=(m|h<<n)&g;for(k[l--]=JSBI.__kConversionChars[o],m=h>>>f-n;0!==m;)k[l--]=JSBI.__kConversionChars[m&g],m>>>=f;if(a.sign&&(k[l--]=\"-\"),-1!=l)throw new Error(\"implementation bug\");return k.join(\"\")}static __toStringGeneric(a,b,c){var d=Math.clz32;const e=a.length;if(0===e)return\"\";if(1===e){let d=a.__unsignedDigit(0).toString(b);return!1===c&&a.sign&&(d=\"-\"+d),d}const f=32*e-d(a.__digit(e-1)),g=JSBI.__kMaxBitsPerChar[b],h=g-1;let i=f*JSBI.__kBitsPerCharTableMultiplier;i+=h-1,i=0|i/h;const j=i+1>>1,k=JSBI.exponentiate(JSBI.__oneDigit(b,!1),JSBI.__oneDigit(j,!1));let l,m;const n=k.__unsignedDigit(0);if(1===k.length&&65535>=n){l=new JSBI(a.length,!1),l.__initializeDigits();let c=0;for(let b=2*a.length-1;0<=b;b--){const d=c<<16|a.__halfDigit(b);l.__setHalfDigit(b,0|d/n),c=0|d%n}m=c.toString(b)}else{const c=JSBI.__absoluteDivLarge(a,k,!0,!0);l=c.quotient;const d=c.remainder.__trim();m=JSBI.__toStringGeneric(d,b,!0)}l.__trim();let o=JSBI.__toStringGeneric(l,b,!0);for(;m.length<j;)m=\"0\"+m;return!1===c&&a.sign&&(o=\"-\"+o),o+m}static __unequalSign(a){return a?-1:1}static __absoluteGreater(a){return a?-1:1}static __absoluteLess(a){return a?1:-1}static __compareToBigInt(a,b){const c=a.sign;if(c!==b.sign)return JSBI.__unequalSign(c);const d=JSBI.__absoluteCompare(a,b);return 0<d?JSBI.__absoluteGreater(c):0>d?JSBI.__absoluteLess(c):0}static __compareToNumber(a,b){if(b|!0){const c=a.sign,d=0>b;if(c!==d)return JSBI.__unequalSign(c);if(0===a.length){if(d)throw new Error(\"implementation bug\");return 0===b?0:-1}if(1<a.length)return JSBI.__absoluteGreater(c);const e=Math.abs(b),f=a.__unsignedDigit(0);return f>e?JSBI.__absoluteGreater(c):f<e?JSBI.__absoluteLess(c):0}return JSBI.__compareToDouble(a,b)}static __compareToDouble(a,b){var c=Math.clz32;if(b!==b)return b;if(b===1/0)return-1;if(b===-Infinity)return 1;const d=a.sign;if(d!==0>b)return JSBI.__unequalSign(d);if(0===b)throw new Error(\"implementation bug: should be handled elsewhere\");if(0===a.length)return-1;JSBI.__kBitConversionDouble[0]=b;const e=2047&JSBI.__kBitConversionInts[1]>>>20;if(2047==e)throw new Error(\"implementation bug: handled elsewhere\");const f=e-1023;if(0>f)return JSBI.__absoluteGreater(d);const g=a.length;let h=a.__digit(g-1);const i=c(h),j=32*g-i,k=f+1;if(j<k)return JSBI.__absoluteLess(d);if(j>k)return JSBI.__absoluteGreater(d);let l=1048576|1048575&JSBI.__kBitConversionInts[1],m=JSBI.__kBitConversionInts[0];const n=20,o=31-i;if(o!==(j-1)%31)throw new Error(\"implementation bug\");let p,q=0;if(20>o){const a=n-o;q=a+32,p=l>>>a,l=l<<32-a|m>>>a,m<<=32-a}else if(20===o)q=32,p=l,l=m;else{const a=o-n;q=32-a,p=l<<a|m>>>32-a,l=m<<a}if(h>>>=0,p>>>=0,h>p)return JSBI.__absoluteGreater(d);if(h<p)return JSBI.__absoluteLess(d);for(let c=g-2;0<=c;c--){0<q?(q-=32,p=l>>>0,l=m,m=0):p=0;const b=a.__unsignedDigit(c);if(b>p)return JSBI.__absoluteGreater(d);if(b<p)return JSBI.__absoluteLess(d)}if(0!==l||0!==m){if(0===q)throw new Error(\"implementation bug\");return JSBI.__absoluteLess(d)}return 0}static __equalToNumber(a,b){var c=Math.abs;return b|0===b?0===b?0===a.length:1===a.length&&a.sign===0>b&&a.__unsignedDigit(0)===c(b):0===JSBI.__compareToDouble(a,b)}static __comparisonResultToBool(a,b){switch(b){case 0:return 0>a;case 1:return 0>=a;case 2:return 0<a;case 3:return 0<=a;}throw new Error(\"unreachable\")}static __compare(a,b,c){if(a=JSBI.__toPrimitive(a),b=JSBI.__toPrimitive(b),\"string\"==typeof a&&\"string\"==typeof b)switch(c){case 0:return a<b;case 1:return a<=b;case 2:return a>b;case 3:return a>=b;}if(JSBI.__isBigInt(a)&&\"string\"==typeof b)return b=JSBI.__fromString(b),null!==b&&JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(\"string\"==typeof a&&JSBI.__isBigInt(b))return a=JSBI.__fromString(a),null!==a&&JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(a=JSBI.__toNumeric(a),b=JSBI.__toNumeric(b),JSBI.__isBigInt(a)){if(JSBI.__isBigInt(b))return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(\"number\"!=typeof b)throw new Error(\"implementation bug\");return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(a,b),c)}if(\"number\"!=typeof a)throw new Error(\"implementation bug\");if(JSBI.__isBigInt(b))return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(b,a),2^c);if(\"number\"!=typeof b)throw new Error(\"implementation bug\");return 0===c?a<b:1===c?a<=b:2===c?a>b:3===c?a>=b:void 0}__clzmsd(){return Math.clz32(this[this.length-1])}static __absoluteAdd(a,b,c){if(a.length<b.length)return JSBI.__absoluteAdd(b,a,c);if(0===a.length)return a;if(0===b.length)return a.sign===c?a:JSBI.unaryMinus(a);let d=a.length;(0===a.__clzmsd()||b.length===a.length&&0===b.__clzmsd())&&d++;const e=new JSBI(d,c);let f=0,g=0;for(;g<b.length;g++){const c=b.__digit(g),d=a.__digit(g),h=(65535&d)+(65535&c)+f,i=(d>>>16)+(c>>>16)+(h>>>16);f=i>>>16,e.__setDigit(g,65535&h|i<<16)}for(;g<a.length;g++){const b=a.__digit(g),c=(65535&b)+f,d=(b>>>16)+(c>>>16);f=d>>>16,e.__setDigit(g,65535&c|d<<16)}return g<e.length&&e.__setDigit(g,f),e.__trim()}static __absoluteSub(a,b,c){if(0===a.length)return a;if(0===b.length)return a.sign===c?a:JSBI.unaryMinus(a);const d=new JSBI(a.length,c);let e=0,f=0;for(;f<b.length;f++){const c=a.__digit(f),g=b.__digit(f),h=(65535&c)-(65535&g)-e;e=1&h>>>16;const i=(c>>>16)-(g>>>16)-e;e=1&i>>>16,d.__setDigit(f,65535&h|i<<16)}for(;f<a.length;f++){const b=a.__digit(f),c=(65535&b)-e;e=1&c>>>16;const g=(b>>>16)-e;e=1&g>>>16,d.__setDigit(f,65535&c|g<<16)}return d.__trim()}static __absoluteAddOne(a,b,c=null){const d=a.length;null===c?c=new JSBI(d,b):c.sign=b;let e=!0;for(let f,g=0;g<d;g++){f=a.__digit(g);const b=-1===f;e&&(f=0|f+1),e=b,c.__setDigit(g,f)}return e&&c.__setDigitGrow(d,1),c}static __absoluteSubOne(a,b){const c=a.length;b=b||c;const d=new JSBI(b,!1);let e=!0;for(let f,g=0;g<c;g++){f=a.__digit(g);const b=0===f;e&&(f=0|f-1),e=b,d.__setDigit(g,f)}for(let e=c;e<b;e++)d.__setDigit(e,0);return d}static __absoluteAnd(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=f;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)&b.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteAndNot(a,b,c=null){const d=a.length,e=b.length;let f=e;d<e&&(f=d);let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)&~b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteOr(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)|b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteXor(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)^b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteCompare(a,b){const c=a.length-b.length;if(0!=c)return c;let d=a.length-1;for(;0<=d&&a.__digit(d)===b.__digit(d);)d--;return 0>d?0:a.__unsignedDigit(d)>b.__unsignedDigit(d)?1:-1}static __multiplyAccumulate(a,b,c,d){var e=Math.imul;if(0===b)return;const f=65535&b,g=b>>>16;let h=0,j=0,k=0;for(let l=0;l<a.length;l++,d++){let b=c.__digit(d),i=65535&b,m=b>>>16;const n=a.__digit(l),o=65535&n,p=n>>>16,q=e(o,f),r=e(o,g),s=e(p,f),t=e(p,g);i+=j+(65535&q),m+=k+h+(i>>>16)+(q>>>16)+(65535&r)+(65535&s),h=m>>>16,j=(r>>>16)+(s>>>16)+(65535&t)+h,h=j>>>16,j&=65535,k=t>>>16,b=65535&i|m<<16,c.__setDigit(d,b)}for(;0!=h||0!==j||0!==k;d++){let a=c.__digit(d);const b=(65535&a)+j,e=(a>>>16)+(b>>>16)+k+h;j=0,k=0,h=e>>>16,a=65535&b|e<<16,c.__setDigit(d,a)}}static __internalMultiplyAdd(a,b,c,d,e){var f=Math.imul;let g=c,h=0;for(let j=0;j<d;j++){const c=a.__digit(j),d=f(65535&c,b),i=(65535&d)+h+g;g=i>>>16;const k=f(c>>>16,b),l=(65535&k)+(d>>>16)+g;g=l>>>16,h=k>>>16,e.__setDigit(j,l<<16|65535&i)}if(e.length>d)for(e.__setDigit(d++,g+h);d<e.length;)e.__setDigit(d++,0);else if(0!==g+h)throw new Error(\"implementation bug\")}__inplaceMultiplyAdd(a,b,c){var e=Math.imul;c>this.length&&(c=this.length);const f=65535&a,g=a>>>16;let h=0,j=65535&b,k=b>>>16;for(let l=0;l<c;l++){const a=this.__digit(l),b=65535&a,c=a>>>16,d=e(b,f),i=e(b,g),m=e(c,f),n=e(c,g),o=j+(65535&d),p=k+h+(o>>>16)+(d>>>16)+(65535&i)+(65535&m);j=(i>>>16)+(m>>>16)+(65535&n)+(p>>>16),h=j>>>16,j&=65535,k=n>>>16;this.__setDigit(l,65535&o|p<<16)}if(0!=h||0!==j||0!==k)throw new Error(\"implementation bug\")}static __absoluteDivSmall(a,b,c){null===c&&(c=new JSBI(a.length,!1));let d=0;for(let e,f=2*a.length-1;0<=f;f-=2){e=(d<<16|a.__halfDigit(f))>>>0;const g=0|e/b;d=0|e%b,e=(d<<16|a.__halfDigit(f-1))>>>0;const h=0|e/b;d=0|e%b,c.__setDigit(f>>>1,g<<16|h)}return c}static __absoluteModSmall(a,b){let c=0;for(let d=2*a.length-1;0<=d;d--){const e=(c<<16|a.__halfDigit(d))>>>0;c=0|e%b}return c}static __absoluteDivLarge(a,b,d,e){var f=Math.imul;const g=b.__halfDigitLength(),h=b.length,c=a.__halfDigitLength()-g;let i=null;d&&(i=new JSBI(c+2>>>1,!1),i.__initializeDigits());const k=new JSBI(g+2>>>1,!1);k.__initializeDigits();const l=JSBI.__clz16(b.__halfDigit(g-1));0<l&&(b=JSBI.__specialLeftShift(b,l,0));const m=JSBI.__specialLeftShift(a,l,1),n=b.__halfDigit(g-1);let o=0;for(let l,p=c;0<=p;p--){l=65535;const a=m.__halfDigit(p+g);if(a!==n){const c=(a<<16|m.__halfDigit(p+g-1))>>>0;l=0|c/n;let d=0|c%n;const e=b.__halfDigit(g-2),h=m.__halfDigit(p+g-2);for(;f(l,e)>>>0>(d<<16|h)>>>0&&(l--,d+=n,!(65535<d)););}JSBI.__internalMultiplyAdd(b,l,0,h,k);let e=m.__inplaceSub(k,p,g+1);0!==e&&(e=m.__inplaceAdd(b,p,g),m.__setHalfDigit(p+g,m.__halfDigit(p+g)+e),l--),d&&(1&p?o=l<<16:i.__setDigit(p>>>1,o|l))}return e?(m.__inplaceRightShift(l),d?{quotient:i,remainder:m}:m):d?i:void 0}static __clz16(a){return Math.clz32(a)-16}__inplaceAdd(a,b,c){let d=0;for(let e=0;e<c;e++){const c=this.__halfDigit(b+e)+a.__halfDigit(e)+d;d=c>>>16,this.__setHalfDigit(b+e,c)}return d}__inplaceSub(a,b,c){let d=0;if(1&b){b>>=1;let e=this.__digit(b),f=65535&e,g=0;for(;g<c-1>>>1;g++){const c=a.__digit(g),h=(e>>>16)-(65535&c)-d;d=1&h>>>16,this.__setDigit(b+g,h<<16|65535&f),e=this.__digit(b+g+1),f=(65535&e)-(c>>>16)-d,d=1&f>>>16}const h=a.__digit(g),i=(e>>>16)-(65535&h)-d;d=1&i>>>16,this.__setDigit(b+g,i<<16|65535&f);if(b+g+1>=this.length)throw new RangeError(\"out of bounds\");0==(1&c)&&(e=this.__digit(b+g+1),f=(65535&e)-(h>>>16)-d,d=1&f>>>16,this.__setDigit(b+a.length,4294901760&e|65535&f))}else{b>>=1;let e=0;for(;e<a.length-1;e++){const c=this.__digit(b+e),f=a.__digit(e),g=(65535&c)-(65535&f)-d;d=1&g>>>16;const h=(c>>>16)-(f>>>16)-d;d=1&h>>>16,this.__setDigit(b+e,h<<16|65535&g)}const f=this.__digit(b+e),g=a.__digit(e),h=(65535&f)-(65535&g)-d;d=1&h>>>16;let i=0;0==(1&c)&&(i=(f>>>16)-(g>>>16)-d,d=1&i>>>16),this.__setDigit(b+e,i<<16|65535&h)}return d}__inplaceRightShift(a){if(0===a)return;let b=this.__digit(0)>>>a;const c=this.length-1;for(let e=0;e<c;e++){const c=this.__digit(e+1);this.__setDigit(e,c<<32-a|b),b=c>>>a}this.__setDigit(c,b)}static __specialLeftShift(a,b,c){const d=a.length,e=new JSBI(d+c,!1);if(0===b){for(let b=0;b<d;b++)e.__setDigit(b,a.__digit(b));return 0<c&&e.__setDigit(d,0),e}let f=0;for(let g=0;g<d;g++){const c=a.__digit(g);e.__setDigit(g,c<<b|f),f=c>>>32-b}return 0<c&&e.__setDigit(d,f),e}static __leftShiftByAbsolute(a,b){const c=JSBI.__toShiftAmount(b);if(0>c)throw new RangeError(\"BigInt too big\");const e=c>>>5,f=31&c,g=a.length,h=0!==f&&0!=a.__digit(g-1)>>>32-f,j=g+e+(h?1:0),k=new JSBI(j,a.sign);if(0===f){let b=0;for(;b<e;b++)k.__setDigit(b,0);for(;b<j;b++)k.__setDigit(b,a.__digit(b-e))}else{let b=0;for(let a=0;a<e;a++)k.__setDigit(a,0);for(let c=0;c<g;c++){const g=a.__digit(c);k.__setDigit(c+e,g<<f|b),b=g>>>32-f}if(h)k.__setDigit(g+e,b);else if(0!=b)throw new Error(\"implementation bug\")}return k.__trim()}static __rightShiftByAbsolute(a,b){const c=a.length,d=a.sign,e=JSBI.__toShiftAmount(b);if(0>e)return JSBI.__rightShiftByMaximum(d);const f=e>>>5,g=31&e;let h=c-f;if(0>=h)return JSBI.__rightShiftByMaximum(d);let i=!1;if(d){if(0!=(a.__digit(f)&(1<<g)-1))i=!0;else for(let b=0;b<f;b++)if(0!==a.__digit(b)){i=!0;break}}if(i&&0===g){const b=a.__digit(c-1);0==~b&&h++}let j=new JSBI(h,d);if(0===g)for(let b=f;b<c;b++)j.__setDigit(b-f,a.__digit(b));else{let b=a.__digit(f)>>>g;const d=c-f-1;for(let c=0;c<d;c++){const e=a.__digit(c+f+1);j.__setDigit(c,e<<32-g|b),b=e>>>g}j.__setDigit(d,b)}return i&&(j=JSBI.__absoluteAddOne(j,!0,j)),j.__trim()}static __rightShiftByMaximum(a){return a?JSBI.__oneDigit(1,!0):JSBI.__zero()}static __toShiftAmount(a){if(1<a.length)return-1;const b=a.__unsignedDigit(0);return b>JSBI.__kMaxLengthBits?-1:b}static __toPrimitive(a,b=\"default\"){if(\"object\"!=typeof a)return a;if(a.constructor===JSBI)return a;const c=a[Symbol.toPrimitive];if(c){const a=c(b);if(\"object\"!=typeof a)return a;throw new TypeError(\"Cannot convert object to primitive value\")}const d=a.valueOf;if(d){const b=d.call(a);if(\"object\"!=typeof b)return b}const e=a.toString;if(e){const b=e.call(a);if(\"object\"!=typeof b)return b}throw new TypeError(\"Cannot convert object to primitive value\")}static __toNumeric(a){return JSBI.__isBigInt(a)?a:+a}static __isBigInt(a){return\"object\"==typeof a&&a.constructor===JSBI}__digit(a){return this[a]}__unsignedDigit(a){return this[a]>>>0}__setDigit(a,b){this[a]=0|b}__setDigitGrow(a,b){this[a]=0|b}__halfDigitLength(){const a=this.length;return 65535>=this.__unsignedDigit(a-1)?2*a-1:2*a}__halfDigit(a){return 65535&this[a>>>1]>>>((1&a)<<4)}__setHalfDigit(a,b){const c=a>>>1,d=this.__digit(c),e=1&a?65535&d|b<<16:4294901760&d|65535&b;this.__setDigit(c,e)}static __digitPow(a,b){let c=1;for(;0<b;)1&b&&(c*=a),b>>>=1,a*=a;return c}}JSBI.__kMaxLength=33554432,JSBI.__kMaxLengthBits=JSBI.__kMaxLength<<5,JSBI.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],JSBI.__kBitsPerCharTableShift=5,JSBI.__kBitsPerCharTableMultiplier=1<<JSBI.__kBitsPerCharTableShift,JSBI.__kConversionChars=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\"],JSBI.__kBitConversionBuffer=new ArrayBuffer(8),JSBI.__kBitConversionDouble=new Float64Array(JSBI.__kBitConversionBuffer),JSBI.__kBitConversionInts=new Int32Array(JSBI.__kBitConversionBuffer);export default JSBI;\n","/**\n * @class\n *\n * A flag enum for {@link MessageBus#requestName} to configure the name request\n * options.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n */\nclass NameFlag {}\n\n/**\n * This name allows other clients to replace it as the name owner on a request.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.ALLOW_REPLACEMENT = 1;\n\n/**\n * This request should replace an existing name if that name allows\n * replacement.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.REPLACE_EXISTING = 2;\n\n/**\n * This request should not enter the queue of clients requesting this name if\n * it is taken.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.DO_NOT_QUEUE = 4;\n\n/**\n * @class\n *\n * An enum for the return value of {@link MessageBus#requestName} to indicate\n * the status of the name request.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n */\nclass RequestNameReply {}\n\n/**\n * The application trying to request ownership of a name is already the owner\n * of it.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.PRIMARY_OWNER = 1;\n\n/**\n * The name already had an owner, `DBUS_NAME_FLAG_DO_NOT_QUEUE` was not\n * specified, and either the current owner did not specify\n * `DBUS_NAME_FLAG_ALLOW_REPLACEMENT` or the requesting application did not\n * specify `DBUS_NAME_FLAG_REPLACE_EXISTING`.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.IN_QUEUE = 2;\n\n/**\n * The name already has an owner, `DBUS_NAME_FLAG_DO_NOT_QUEUE` was specified,\n * and either `DBUS_NAME_FLAG_ALLOW_REPLACEMENT` was not specified by the\n * current owner, or `DBUS_NAME_FLAG_REPLACE_EXISTING` was not specified by the\n * requesting application.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.EXISTS = 3;\n\n/**\n * The application trying to request ownership of a name is already the owner\n * of it.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.ALREADY_OWNER = 4;\n\n/**\n * @class\n *\n * An enum for the return value of {@link MessageBus#releaseName} to indicate\n * the status of the release name request.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-release-name}\n */\nclass ReleaseNameReply {}\n\n/**\n * The caller has released his claim on the given name. Either the caller was\n * the primary owner of the name, and the name is now unused or taken by\n * somebody waiting in the queue for the name, or the caller was waiting in the\n * queue for the name and has now been removed from the queue.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.RELEASED = 1;\n\n/**\n * The given name does not exist on this bus.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.NON_EXISTENT = 2;\n\n/**\n * The caller was not the primary owner of this name, and was also not waiting\n * in the queue to own this name.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.NOT_OWNER = 3;\n\n/**\n * @class\n *\n * An enum value for the {@link Message} `type` member to indicate the type of message.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n */\nclass MessageType {}\n\n/**\n * The message is a method call.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.METHOD_CALL = 1;\n\n/**\n * The message is a method return to a previous call.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.METHOD_RETURN = 2;\n\n/**\n * The message is an error reply.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.ERROR = 3;\n\n/**\n * The message is a signal.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.SIGNAL = 4;\n\n/**\n * @class\n *\n * An flag enum for the {@link Message} `flags` member to configure behavior\n * for message processing.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n */\nclass MessageFlag {}\n\n/**\n * No reply is expected from this message.\n *\n * @memberof MessageFlag\n * @static\n * @constant\n */\nMessageFlag.NO_REPLY_EXPECTED = 1;\n\n/**\n * This message should not autostart a service.\n *\n * @memberof MessageFlag\n * @static\n * @constant\n */\nMessageFlag.NO_AUTO_START = 2;\n\nconst MAX_INT64_STR = '9223372036854775807';\nconst MIN_INT64_STR = '-9223372036854775807';\nconst MAX_UINT64_STR = '18446744073709551615';\nconst MIN_UINT64_STR = '0';\n\nconst _JSBIConstants = {};\n\nfunction _getJSBIConstants () {\n if (Object.keys(_JSBIConstants).length !== 0) {\n return _JSBIConstants;\n }\n\n const JSBI = require('jsbi');\n\n _JSBIConstants.MAX_INT64 = JSBI.BigInt(MAX_INT64_STR);\n _JSBIConstants.MIN_INT64 = JSBI.BigInt(MIN_INT64_STR);\n _JSBIConstants.MAX_UINT64 = JSBI.BigInt(MAX_UINT64_STR);\n _JSBIConstants.MIN_UINT64 = JSBI.BigInt(MIN_UINT64_STR);\n\n return _JSBIConstants;\n}\n\nconst _BigIntConstants = {};\n\nfunction _getBigIntConstants () {\n if (Object.keys(_BigIntConstants).length !== 0) {\n return _BigIntConstants;\n }\n\n _BigIntConstants.MAX_INT64 = BigInt(MAX_INT64_STR);\n _BigIntConstants.MIN_INT64 = BigInt(MIN_INT64_STR);\n _BigIntConstants.MAX_UINT64 = BigInt(MAX_UINT64_STR);\n _BigIntConstants.MIN_UINT64 = BigInt(MIN_UINT64_STR);\n\n return _BigIntConstants;\n}\n\nmodule.exports = {\n MAX_INT64_STR: MAX_INT64_STR,\n MIN_INT64_STR: MIN_INT64_STR,\n MAX_UINT64_STR: MAX_UINT64_STR,\n MIN_UINT64_STR: MIN_UINT64_STR,\n\n NameFlag: NameFlag,\n RequestNameReply: RequestNameReply,\n ReleaseNameReply: ReleaseNameReply,\n MessageType: MessageType,\n MessageFlag: MessageFlag,\n\n headerTypeName: [\n null,\n 'path',\n 'interface',\n 'member',\n 'errorName',\n 'replySerial',\n 'destination',\n 'sender',\n 'signature',\n 'unixFd'\n ],\n\n // TODO: merge to single hash? e.g path -> [1, 'o']\n fieldSignature: {\n path: 'o',\n interface: 's',\n member: 's',\n errorName: 's',\n replySerial: 'u',\n destination: 's',\n sender: 's',\n signature: 'g',\n unixFd: 'u'\n },\n headerTypeId: {\n path: 1,\n interface: 2,\n member: 3,\n errorName: 4,\n replySerial: 5,\n destination: 6,\n sender: 7,\n signature: 8,\n unixFd: 9\n },\n protocolVersion: 1,\n endianness: {\n le: 108,\n be: 66\n },\n messageSignature: 'yyyyuua(yv)',\n defaultAuthMethods: ['EXTERNAL', 'DBUS_COOKIE_SHA1', 'ANONYMOUS'],\n _getJSBIConstants: _getJSBIConstants,\n _getBigIntConstants: _getBigIntConstants\n};\n","/**\n * @class\n * A class to represent DBus variants for both the client and service\n * interfaces. The {@link ProxyInterface} and [`Interface`]{@link\n * module:interface~Interface} methods, signals, and properties will use this\n * type to represent variant types. The user should use this class directly for\n * sending variants to methods if their signature expects the type to be a\n * variant.\n *\n * @example\n * let str = new Variant('s', 'hello');\n * let num = new Variant('d', 53);\n * let map = new Variant('a{ss}', { foo: 'bar' });\n * let list = new Variant('as', [ 'foo', 'bar' ]);\n */\nclass Variant {\n /**\n * Construct a new `Variant` with the given signature and value.\n * @param {string} signature - a DBus type signature for the `Variant`.\n * @param {any} value - the value of the `Variant` with type specified by the type signature.\n */\n constructor (signature, value) {\n this.signature = signature;\n this.value = value;\n }\n}\n\nmodule.exports = {\n Variant: Variant\n};\n","/**\n * Utility functions to validate bus names, interface names, and object paths.\n *\n * @module validators\n */\n\nconst busNameRe = /^[A-Za-z_-][A-Za-z0-9_-]*$/;\n/**\n * Validate the string as a valid bus name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus}\n *\n * @static\n * @param {string} name - The name to validate as a valid bus name.\n * @returns {boolean} - Whether the string is a valid bus name.\n */\nfunction isBusNameValid (name) {\n if (typeof name !== 'string') {\n return false;\n }\n\n if (name.startsWith(':')) {\n // a unique bus name\n return true;\n }\n\n // a well-known bus name\n return !!(name.length > 0 &&\n name.length <= 255 &&\n name[0] !== '.' &&\n name.indexOf('.') !== -1 &&\n name.split('.').every((n) => n && busNameRe.test(n)));\n}\n\n/**\n * Throws an error if the given string is not a valid bus name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus}\n *\n * @static\n * @param {string} name - The name to validate as a bus name.\n */\nfunction assertBusNameValid (name) {\n if (!isBusNameValid(name)) {\n throw new Error(`Invalid bus name: ${name}`);\n }\n}\n\nconst pathRe = /^[A-Za-z0-9_]+$/;\n/**\n * Validate the string as a valid object path.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-object-path}\n *\n * @static\n * @param {string} path - The string to validate as an object path.\n * @returns {boolean} - Whether the string is a valid object path.\n */\nfunction isObjectPathValid (path) {\n return !!(typeof path === 'string' &&\n path &&\n path[0] === '/' &&\n (path.length === 1 ||\n (path[path.length - 1] !== '/' &&\n path.split('/').slice(1).every((p) => p && pathRe.test(p)))));\n}\n\n/**\n * Throws an error if the given string is not a valid object path.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-object-path}\n *\n * @static\n * @param {string} path - The string to validate as an object path.\n * @returns {boolean} - Whether the string is a valid object path.\n */\nfunction assertObjectPathValid (path) {\n if (!isObjectPathValid(path)) {\n throw new Error(`Invalid object path: ${path}`);\n }\n}\n\nconst elementRe = /^[A-Za-z_][A-Za-z0-9_]*$/;\n/**\n * Validate the string as a valid interface name.\n * see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as an interface name.\n * @returns {boolean} - Whether the string is a valid interface name.\n */\nfunction isInterfaceNameValid (name) {\n return !!(typeof name === 'string' &&\n name &&\n name.length > 0 &&\n name.length <= 255 &&\n name[0] !== '.' &&\n name.indexOf('.') !== -1 &&\n name.split('.').every((n) => n && elementRe.test(n)));\n}\n\n/**\n * Throws an error if the given string is not a valid interface name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as an interface name.\n * @returns {boolean} - Whether the string is a valid interface name.\n */\nfunction assertInterfaceNameValid (name) {\n if (!isInterfaceNameValid(name)) {\n throw new Error(`Invalid interface name: ${name}`);\n }\n}\n\n/**\n * Validate the string is a valid member name\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as a member name.\n * @returns {boolean} - Whether the string is a valid member name.\n */\nfunction isMemberNameValid (name) {\n return !!(typeof name === 'string' &&\n name &&\n name.length > 0 &&\n name.length <= 255 &&\n elementRe.test(name));\n}\n\n/**\n * Throws an error if the string is not a valid member name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as a member name.\n */\nfunction assertMemberNameValid (name) {\n if (!assertMemberNameValid) {\n throw new Error(`Invalid member name: ${name}`);\n }\n}\n\nmodule.exports = {\n isBusNameValid: isBusNameValid,\n assertBusNameValid: assertBusNameValid,\n isObjectPathValid: isObjectPathValid,\n assertObjectPathValid: assertObjectPathValid,\n isInterfaceNameValid: isInterfaceNameValid,\n assertInterfaceNameValid: assertInterfaceNameValid,\n isMemberNameValid: isMemberNameValid,\n assertMemberNameValid: assertMemberNameValid\n};\n","const {\n assertBusNameValid,\n assertInterfaceNameValid,\n assertObjectPathValid,\n assertMemberNameValid\n} = require('./validators');\n\nconst {\n METHOD_CALL,\n METHOD_RETURN,\n ERROR,\n SIGNAL\n} = require('./constants').MessageType;\n\n/**\n * @class\n * A `Message` is a class used for sending and receiving messages through the\n * {@link MessageBus} with the low-level api. `Message`s can be constructed by\n * the user directly for method calls or with the static convenience methods on\n * this class for the other types of messages. `Message`s can be sent through a\n * connected MessageBus with {@link MessageBus#call} for method calls that\n * expect a reply from the server or {@link MessageBus#send} for messages that\n * do not expect a reply. See those methods for an example of how to use this\n * class.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n *\n * @param {object} options - Options to construct this `Message` with. See the\n * corresponding member for more information.\n * @param {MessageType} [options.type={@link MessageType.METHOD_CALL}]\n * @param {int} [options.serial]\n * @param {string} [options.destination]\n * @param {string} [options.path]\n * @param {string} [options.interface] - Required for signals.\n * @param {string} [options.member] - Required for method calls and signals.\n * @param {string} [options.signature='']\n * @param {Array} [options.body=[]] - Must match the signature.\n * @param {string} [options.errorName] - Must be a valid interface name.\n * Required for errors.\n * @param {string} [options.replySerial] - Required for errors and method returns.\n * @param {MessageFlags} [options.flags]\n */\nclass Message {\n /**\n * Construct a new `Message` to send on the bus.\n */\n constructor (msg) {\n /**\n * @member {MessageType} - The type of message this is.\n */\n this.type = (msg.type ? msg.type : METHOD_CALL);\n this._sent = false;\n this._serial = (isNaN(msg.serial) ? null : msg.serial);\n /**\n * @member {string} - The name of the object path for the message.\n * Required for method calls and signals.\n */\n this.path = msg.path;\n /**\n * @member {string} - The destination interface for this message.\n */\n this.interface = msg.interface;\n /**\n * @member {string} - The destination member on the interface for this message.\n */\n this.member = msg.member;\n /**\n * @member {string} - The name of the error if this is a message of type\n * `ERROR`. Must be a valid interface name.\n */\n this.errorName = msg.errorName;\n /**\n * @member {int} - The serial for the message this is in reply to. Set for\n * types `ERROR` and `METHOD_RETURN`.\n */\n this.replySerial = msg.replySerial;\n /**\n * @member {string} - The address on the bus to send the message\n * to.\n */\n this.destination = msg.destination;\n /**\n * @member {string} - The name of the bus from which this message was sent.\n * Set by the {@link MessageBus}.\n */\n this.sender = msg.sender;\n /**\n * @member {string} - The type signature for the body args.\n */\n this.signature = msg.signature || '';\n /**\n * @member {Array} - The body arguments for this message. Must match the signature.\n */\n this.body = msg.body || [];\n /**\n * @member {MessageFlags} - The flags for this message.\n */\n this.flags = msg.flags || 0;\n\n if (this.destination) {\n assertBusNameValid(this.destination);\n }\n\n if (this.interface) {\n assertInterfaceNameValid(this.interface);\n }\n\n if (this.path) {\n assertObjectPathValid(this.path);\n }\n\n if (this.member) {\n assertMemberNameValid(this.member);\n }\n\n if (this.errorName) {\n assertInterfaceNameValid(this.errorName);\n }\n\n const requireFields = (...fields) => {\n for (const field of fields) {\n if (this[field] === undefined) {\n throw new Error(`Message is missing a required field: ${field}`);\n }\n }\n };\n\n // validate required fields\n switch (this.type) {\n case METHOD_CALL:\n requireFields('path', 'member');\n break;\n case SIGNAL:\n requireFields('path', 'member', 'interface');\n break;\n case ERROR:\n requireFields('errorName', 'replySerial');\n break;\n case METHOD_RETURN:\n requireFields('replySerial');\n break;\n default:\n throw new Error(`Got unknown message type: ${this.type}`);\n }\n }\n\n /**\n * @member {int} - The serial of the message to track through the bus. You\n * must use {@link MessageBus#newSerial} to get this serial. If not set, it\n * will be set automatically when the message is sent.\n */\n get serial () {\n return this._serial;\n }\n\n set serial (value) {\n this._sent = false;\n this._serial = value;\n }\n\n /**\n * Construct a new `Message` of type `ERROR` in reply to the given `Message`.\n *\n * @param {Message} msg - The `Message` this error is in reply to.\n * @param {string} errorName - The name of the error. Must be a valid\n * interface name.\n * @param {string} [errorText='An error occurred.'] - An error message for\n * the error.\n */\n static newError (msg, errorName, errorText = 'An error occurred.') {\n assertInterfaceNameValid(errorName);\n return new Message({\n type: ERROR,\n replySerial: msg.serial,\n destination: msg.sender,\n errorName: errorName,\n signature: 's',\n body: [errorText]\n });\n }\n\n /**\n * Construct a new `Message` of type `METHOD_RETURN` in reply to the given\n * message.\n *\n * @param {Message} msg - The `Message` this `Message` is in reply to.\n * @param {string} signature - The signature for the message body.\n * @param {Array} body - The body of the message as an array of arguments.\n * Must match the signature.\n */\n static newMethodReturn (msg, signature = '', body = []) {\n return new Message({\n type: METHOD_RETURN,\n replySerial: msg.serial,\n destination: msg.sender,\n signature: signature,\n body: body\n });\n }\n\n /**\n * Construct a new `Message` of type `SIGNAL` to broadcast on the bus.\n *\n * @param {string} path - The object path of this signal.\n * @param {string} iface - The interface of this signal.\n * @param {string} signature - The signature of the message body.\n * @param {Array] body - The body of the message as an array of arguments.\n * Must match the signature.\n */\n static newSignal (path, iface, name, signature = '', body = []) {\n return new Message({\n type: SIGNAL,\n interface: iface,\n path: path,\n member: name,\n signature: signature,\n body: body\n });\n }\n}\n\nmodule.exports = {\n Message: Message\n};\n","// parse signature from string to tree\n\nconst match = {\n '{': '}',\n '(': ')'\n};\n\nconst knownTypes = {};\n'(){}ybnqiuxtdsogarvehm*?@&^'.split('').forEach(function (c) {\n knownTypes[c] = true;\n});\n\nfunction parseSignature (signature) {\n let index = 0;\n function next () {\n if (index < signature.length) {\n const c = signature[index];\n ++index;\n return c;\n }\n return null;\n }\n\n function parseOne (c) {\n function checkNotEnd (c) {\n if (!c) {\n throw new Error('Bad signature: unexpected end');\n }\n return c;\n }\n\n if (!knownTypes[c]) { throw new Error(`Unknown type: \"${c}\" in signature \"${signature}\"`); }\n\n let ele;\n const res = { type: c, child: [] };\n switch (c) {\n case 'a': // array\n ele = next();\n checkNotEnd(ele);\n res.child.push(parseOne(ele));\n return res;\n case '{': // dict entry\n case '(': // struct\n while ((ele = next()) !== null && ele !== match[c]) { res.child.push(parseOne(ele)); }\n checkNotEnd(ele);\n return res;\n }\n return res;\n }\n\n const ret = [];\n let c;\n while ((c = next()) !== null) {\n ret.push(parseOne(c));\n }\n return ret;\n}\n\nfunction collapseSignature (value) {\n if (value.child.length === 0) {\n return value.type;\n }\n\n let type = value.type;\n for (let i = 0; i < value.child.length; ++i) {\n type += collapseSignature(value.child[i]);\n }\n if (type[0] === '{') {\n type += '}';\n } else if (type[0] === '(') {\n type += ')';\n }\n return type;\n}\n\nmodule.exports = {\n parseSignature: parseSignature,\n collapseSignature: collapseSignature\n};\n","/**\n * A module for exporting interfaces on a name on the message bus.\n *\n * @module interface\n */\nconst { parseSignature, collapseSignature } = require('../signature');\nconst variant = require('../variant');\nconst Variant = variant.Variant;\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have read access\n * to the property.\n *\n * @static\n */\nconst ACCESS_READ = 'read';\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have write access\n * to the property.\n *\n * @static\n */\nconst ACCESS_WRITE = 'write';\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have read and\n * write access to the property.\n *\n * @static\n */\nconst ACCESS_READWRITE = 'readwrite';\nconst EventEmitter = require('events');\nconst {\n assertInterfaceNameValid,\n assertMemberNameValid\n} = require('../validators');\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a property. The property will\n * be gotten and set from the class when users call the standard DBus methods\n * `org.freedesktop.DBus.Properties.Get`,\n * `org.freedesktop.DBus.Properties.Set`, and\n * `org.freedesktop.DBus.Properties.GetAll`. The property getters and setters\n * may throw a {@link DBusError} with an error name and message to return the\n * error to the client.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * class MyInterface extends Interface {\n * // uncomment below to use the decorator (jsdoc bug)\n * //@property({signature: 's'})\n * get MyProp() {\n * return this.myProp;\n * }\n * set MyProp(value) {\n * this.myProp = value;\n * }\n * }\n *\n * @param {object} options - The options for this property.\n * @param {string} options.signature - The DBus type signature for this property.\n * @param {access} [options.access=ACCESS_READWRITE] - The read and write\n * access of the property for clients (effects `Get` and `Set` property methods).\n * @param {string} [options.name] - The name of this property on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction property (options) {\n options.access = options.access || ACCESS_READWRITE;\n if (!options.signature) {\n throw new Error('missing signature for property');\n }\n options.signatureTree = parseSignature(options.signature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n descriptor.finisher = function (klass) {\n klass.prototype.$properties = klass.prototype.$properties || [];\n klass.prototype.$properties[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a method. The method will be\n * called when the client calls it on the bus with the given arguments with\n * types specified by the `inSignature` in the method options. The method\n * should return a result specified by the `outSignature` which will be\n * returned to the client over the message bus. If multiple output parameters\n * are specified in the `outSignature`, they should be returned within an\n * array.\n *\n * The method may also be `async` or return a `Promise` with the result and the\n * reply will be sent once the promise returns with a response body.\n *\n * The method may throw a {@link DBusError} with an error name and\n * message to return the error to the client.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * // uncomment the decorators to use them (jsdoc bug)\n *\n * class MyInterface extends Interface {\n * //@method({inSignature: 's', outSignature: 's'})\n * async Echo(what) {\n * return what;\n * }\n *\n * //@method({inSignature: 'ss', outSignature: 'vv'})\n * ReturnsMultiple(what, what2) {\n * return [\n * new Variant('s', what),\n * new Variant('s', what2)\n * ];\n * }\n *\n * //@method({inSignature: '', outSignature: ''})\n * ThrowsError() {\n * // the error is returned to the client\n * throw new DBusError('org.test.iface.Error', 'something went wrong');\n * }\n * }\n *\n * @param {object} options - The options for this method.\n * @param {string} [options.inSignature=\"\"] - The DBus type signature for the\n * input to this method.\n * @param {string} [options.outSignature=\"\"] - The DBus type signature for the\n * output of this method.\n * @param {string} [options.name] - The name of this method on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction method (options) {\n // TODO allow overriding of methods?\n // TODO introspect the names of the arguments for the function:\n // https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\n options.disabled = !!options.disabled;\n options.inSignature = options.inSignature || '';\n options.outSignature = options.outSignature || '';\n options.inSignatureTree = parseSignature(options.inSignature);\n options.outSignatureTree = parseSignature(options.outSignature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n options.fn = descriptor.descriptor.value;\n descriptor.finisher = function (klass) {\n klass.prototype.$methods = klass.prototype.$methods || [];\n klass.prototype.$methods[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a signal. To emit the signal on\n * the bus to listeners, just call the decorated method and the signal will be\n * emitted with the returned value with types specified by the `signature` in\n * the signal options. If the signal has multiple output parameters, they\n * should be returned in an array.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * // uncomment the decorators to use them (jsdoc bug)\n * class MyInterface extends Interface {\n * //@signal({signature: 's'})\n * HelloWorld(value) {\n * return value;\n * }\n *\n * //@signal({signature: 'ss'})\n * SignalMultiple(x) {\n * return [\n * 'hello',\n * 'world'\n * ];\n * }\n * }\n *\n * @param {object} options - The options for this property.\n * @param {string} options.signature - The DBus type signature for this signal.\n * @param {string} [options.name] - The name of this signal on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction signal (options) {\n // TODO introspect the names of the arguments for the function:\n // https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\n options.signature = options.signature || '';\n options.signatureTree = parseSignature(options.signature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n options.fn = descriptor.descriptor.value;\n descriptor.descriptor.value = function () {\n if (options.disabled) {\n throw new Error('tried to call a disabled signal');\n }\n const result = options.fn.apply(this, arguments);\n this.$emitter.emit('signal', options, result);\n };\n descriptor.finisher = function (klass) {\n klass.prototype.$signals = klass.prototype.$signals || [];\n klass.prototype.$signals[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * The `Interface` is an abstract class used for defining and exporting an\n * interface on a DBus name. You can override this class to make your own DBus\n * interfaces. Use the decorators within this module to define the\n * [properties]{@link module:interface.property}, [methods]{@link\n * module:interface.method}, and [signals]{@link module:interface.signal} that\n * the interface has. These will be advertised to users in the introspection\n * xml gotten by the `org.freedesktop.DBus.Introspect` method on the name. See\n * the documentation for the decorators for more information. The constructor\n * of the `Interface` should call `super()` with the name of the interface that\n * will be exported.\n *\n * @example\n * class MyInterface extends Interface {\n * constructor() {\n * super('org.test.interface_name');\n * }\n * // define properties, methods, and signals with decorated functions\n * }\n * let bus = dbus.sessionBus();\n * let name = await bus.requestName('org.test.bus_name');\n * let iface = new MyInterface();\n * name.export('/org/test/path', iface);\n */\nclass Interface {\n /**\n * Create an interface. This should be called with the name of the interface\n * in the class that extends it.\n */\n constructor (name) {\n assertInterfaceNameValid(name);\n this.$name = name;\n this.$emitter = new EventEmitter();\n }\n\n /**\n * An alternative to the decorator functions to configure\n * [`Interface`]{@link module:interface~Interface} DBus members when\n * decorators cannot be supported.\n *\n * *Calling this method twice on the same `Interface` or mixing this method\n * with the decorator interface will result in undefined behavior that may be\n * specified at a future time.*\n *\n * @static\n * @example\n * ConfiguredInterface.configureMembers({\n * properties: {\n * SomeProperty: {\n * signature: 's'\n * }\n * },\n * methods: {\n * Echo: {\n * inSignature: 'v',\n * outSignature: 'v'\n * }\n * },\n * signals: {\n * HelloWorld: {\n * signature: 'ss'\n * }\n * }\n * });\n *\n * @param members {Object} - Member configuration object.\n * @param members.properties {Object} - The class methods to define as\n * properties. The key should be a method defined on the class and the value\n * should be the options for a [property]{@link module:interface.property}\n * decorator.\n * @param members.methods {Object} - The class methods to define as DBus\n * methods. The key should be a method defined on the class and the value\n * should be the options for a [method]{@link module:interface.method}\n * decorator.\n * @param members.signals {Object} - The class methods to define as signals.\n * The key should be a method defined on the class and hte value should be\n * options for a [signal]{@link module:interface.signal} decorator.\n */\n static configureMembers (members) {\n const properties = members.properties || {};\n const methods = members.methods || {};\n const signals = members.signals || {};\n\n this.prototype.$properties = {};\n this.prototype.$methods = {};\n this.prototype.$signals = {};\n\n for (const k of Object.keys(properties)) {\n const options = properties[k];\n options.name = options.name || k;\n options.access = options.access || ACCESS_READWRITE;\n if (!options.signature) {\n throw new Error('missing signature for property');\n }\n options.signatureTree = parseSignature(options.signature);\n assertMemberNameValid(options.name);\n this.prototype.$properties[options.name] = options;\n }\n\n for (const k of Object.keys(methods)) {\n const options = methods[k];\n options.name = options.name || k;\n assertMemberNameValid(options.name);\n options.disabled = !!options.disabled;\n options.inSignature = options.inSignature || '';\n options.outSignature = options.outSignature || '';\n options.inSignatureTree = parseSignature(options.inSignature);\n options.outSignatureTree = parseSignature(options.outSignature);\n options.fn = this.prototype[k];\n this.prototype.$methods[options.name] = options;\n }\n\n for (const k of Object.keys(signals)) {\n const options = signals[k];\n options.name = options.name || k;\n assertMemberNameValid(options.name);\n options.fn = this.prototype[k];\n options.signature = options.signature || '';\n options.signatureTree = parseSignature(options.signature);\n this.prototype[k] = function () {\n if (options.disabled) {\n throw new Error('tried to call a disabled signal');\n }\n const result = options.fn.apply(this, arguments);\n this.$emitter.emit('signal', options, result);\n };\n this.prototype.$signals[options.name] = options;\n }\n }\n\n /**\n * Emit the `PropertiesChanged` signal on an [`Interface`s]{@link\n * module:interface~Interface} associated standard\n * `org.freedesktop.DBus.Properties` interface with a map of new values and\n * invalidated properties. Pass the properties as JavaScript values.\n *\n * @static\n * @example\n * Interface.emitPropertiesChanged({ SomeProperty: 'bar' }, ['InvalidedProperty']);\n *\n * @param {module:interface~Interface} - the `Interface` to emit the `PropertiesChanged` signal on\n * @param {Object} - A map of property names and new property values that are changed.\n * @param {string[]} - A list of invalidated properties.\n */\n static emitPropertiesChanged (iface, changedProperties, invalidatedProperties = []) {\n if (!Array.isArray(invalidatedProperties) ||\n !invalidatedProperties.every((p) => typeof p === 'string')) {\n throw new Error('invalidated properties must be an array of strings');\n }\n\n // we transform them to variants here based on property signatures so they\n // don't have to\n const properties = iface.$properties || {};\n const changedPropertiesVariants = {};\n for (const p of Object.keys(changedProperties)) {\n if (properties[p] === undefined) {\n throw new Error(`got properties changed with unknown property: ${p}`);\n }\n changedPropertiesVariants[p] = new Variant(properties[p].signature, changedProperties[p]);\n }\n iface.$emitter.emit('properties-changed', changedPropertiesVariants, invalidatedProperties);\n }\n\n $introspect () {\n // TODO cache xml when the interface is declared\n const xml = {\n $: {\n name: this.$name\n }\n };\n\n const properties = this.$properties || {};\n for (const p of Object.keys(properties) || []) {\n const property = properties[p];\n if (property.disabled) {\n continue;\n }\n xml.property = xml.property || [];\n xml.property.push({\n $: {\n name: property.name,\n type: property.signature,\n access: property.access\n }\n });\n }\n\n const methods = this.$methods || {};\n for (const m of Object.keys(methods) || []) {\n const method = methods[m];\n if (method.disabled) {\n continue;\n }\n\n xml.method = xml.method || [];\n const methodXml = {\n $: {\n name: method.name\n },\n arg: [],\n annotation: []\n };\n\n for (const signature of method.inSignatureTree) {\n methodXml.arg.push({\n $: {\n direction: 'in',\n type: collapseSignature(signature)\n }\n });\n }\n\n for (const signature of method.outSignatureTree) {\n methodXml.arg.push({\n $: {\n direction: 'out',\n type: collapseSignature(signature)\n }\n });\n }\n\n if (method.noReply) {\n methodXml.annotation.push({\n $: {\n name: 'org.freedesktop.DBus.Method.NoReply',\n value: 'true'\n }\n });\n }\n\n xml.method.push(methodXml);\n }\n\n const signals = this.$signals || {};\n for (const s of Object.keys(signals) || []) {\n const signal = signals[s];\n if (signal.disabled) {\n continue;\n }\n xml.signal = xml.signal || [];\n const signalXml = {\n $: {\n name: signal.name\n },\n arg: []\n };\n\n for (const signature of signal.signatureTree) {\n signalXml.arg.push({\n $: {\n type: collapseSignature(signature)\n }\n });\n }\n\n xml.signal.push(signalXml);\n }\n\n return xml;\n }\n}\n\nmodule.exports = {\n ACCESS_READ: ACCESS_READ,\n ACCESS_WRITE: ACCESS_WRITE,\n ACCESS_READWRITE: ACCESS_READWRITE,\n property: property,\n method: method,\n signal: signal,\n Interface: Interface\n};\n","const { assertInterfaceNameValid } = require('./validators');\n/**\n * An error that can be thrown from DBus [`Interface`]{@link\n * module:interface~Interface} [methods]{@link module:interface.method} and\n * [property]{@link module:interface.property} getters and setters to return\n * the error to the client.\n *\n * This class will also be thrown by {@link ProxyInterface} method calls when\n * the interface method returns an error to the method call.\n *\n * @param {string} type - The type of error. Must be a valid DBus member name.\n * @param {string} text - The error text. Will be seen by the client.\n */\nclass DBusError extends Error {\n /**\n * Construct a new `DBusError` with the given type and text.\n */\n constructor (type, text, reply = null) {\n assertInterfaceNameValid(type);\n text = text || '';\n super(text);\n this.name = 'DBusError';\n this.type = type;\n this.text = text;\n this.reply = reply;\n }\n}\n\nmodule.exports = {\n DBusError: DBusError\n};\n","const fs = require('fs');\nconst variant = require('../variant');\nconst Variant = variant.Variant;\nconst { Message } = require('../message-type');\n\nconst {\n isObjectPathValid,\n isInterfaceNameValid,\n isMemberNameValid\n} = require('../validators');\n\nconst {\n ACCESS_READ,\n ACCESS_WRITE,\n ACCESS_READWRITE\n} = require('./interface');\n\nconst constants = require('../constants');\n\nconst {\n METHOD_RETURN\n} = constants.MessageType;\n\nconst { DBusError } = require('../errors');\n\nconst INVALID_ARGS = 'org.freedesktop.DBus.Error.InvalidArgs';\n\nfunction sendServiceError (bus, msg, errorMessage) {\n bus.send(Message.newError(msg, 'com.github.dbus_next.ServiceError', `Service error: ${errorMessage}`));\n return true;\n}\n\nfunction handleIntrospect (bus, msg, path) {\n bus.send(Message.newMethodReturn(msg, 's', [bus._introspect(path)]));\n}\n\nfunction handleGetProperty (bus, msg, path) {\n const [ifaceName, prop] = msg.body;\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n // TODO An empty string may be provided for the interface name; in this case,\n // if there are multiple properties on an object with the same name, the\n // results are undefined (picking one by according to an arbitrary\n // deterministic rule, or returning an error, are the reasonable\n // possibilities).\n if (!iface) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such interface: '${ifaceName}'`));\n return;\n }\n\n const properties = iface.$properties || {};\n\n let options = null;\n let propertyKey = null;\n for (const k of Object.keys(properties)) {\n if (properties[k].name === prop && !properties[k].disabled) {\n options = properties[k];\n propertyKey = k;\n break;\n }\n }\n if (options === null) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such property: '${prop}'`));\n return;\n }\n\n let propertyValue = null;\n\n try {\n propertyValue = iface[propertyKey];\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n\n if (propertyValue instanceof DBusError) {\n bus.send(Message.newError(msg, propertyValue.type, propertyValue.text));\n return true;\n } else if (propertyValue === undefined) {\n return sendServiceError(bus, msg, 'tried to get a property that is not set: ' + prop);\n }\n\n if (!(options.access === ACCESS_READWRITE ||\n options.access === ACCESS_READ)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Property does not have read access: '${prop}'`));\n }\n\n const body = new Variant(options.signature, propertyValue);\n\n bus.send(Message.newMethodReturn(msg, 'v', [body]));\n}\n\nfunction handleGetAllProperties (bus, msg, path) {\n const ifaceName = msg.body[0];\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n const result = {};\n if (iface) {\n const properties = iface.$properties || {};\n for (const k of Object.keys(properties)) {\n const p = properties[k];\n if (!(p.access === ACCESS_READ || p.access === ACCESS_READWRITE) || p.disabled) {\n continue;\n }\n\n let value;\n try {\n value = iface[k];\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n if (value instanceof DBusError) {\n bus.send(Message.newError(msg, value.type, value.text));\n return true;\n } else if (value === undefined) {\n return sendServiceError(bus, msg, 'tried to get a property that is not set: ' + p);\n }\n\n result[p.name] = new Variant(p.signature, value);\n }\n }\n\n bus.send(Message.newMethodReturn(msg, 'a{sv}', [result]));\n}\n\nfunction handleSetProperty (bus, msg, path) {\n const [ifaceName, prop, value] = msg.body;\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n if (!iface) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Interface not found: '${ifaceName}'`));\n return;\n }\n\n const properties = iface.$properties || {};\n let options = null;\n let propertyKey = null;\n for (const k of Object.keys(properties)) {\n if (properties[k].name === prop && !properties[k].disabled) {\n options = properties[k];\n propertyKey = k;\n break;\n }\n }\n\n if (options === null) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such property: '${prop}'`));\n return;\n }\n\n if (!(options.access === ACCESS_WRITE || options.access === ACCESS_READWRITE)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Property does not have write access: '${prop}'`));\n }\n\n if (value.signature !== options.signature) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Cannot set property '${prop}' with signature '${value.signature}' (expected '${options.signature}')`));\n return;\n }\n\n try {\n iface[propertyKey] = value.value;\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n\n bus.send(Message.newMethodReturn(msg, '', []));\n}\n\nfunction handleStdIfaces (bus, msg) {\n const {\n member,\n path,\n signature\n } = msg;\n\n const ifaceName = msg.interface;\n\n if (!isInterfaceNameValid(ifaceName)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid interface name: '${ifaceName}'`));\n return true;\n }\n\n if (!isMemberNameValid(member)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid member name: '${member}'`));\n return true;\n }\n\n if (!isObjectPathValid(path)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid path name: '${path}'`));\n return true;\n }\n\n if (ifaceName === 'org.freedesktop.DBus.Introspectable' &&\n member === 'Introspect' &&\n !signature) {\n handleIntrospect(bus, msg, path);\n return true;\n } else if (ifaceName === 'org.freedesktop.DBus.Properties') {\n if (member === 'Get' && signature === 'ss') {\n handleGetProperty(bus, msg, path);\n return true;\n } else if (member === 'Set' && signature === 'ssv') {\n handleSetProperty(bus, msg, path);\n return true;\n } else if (member === 'GetAll') {\n handleGetAllProperties(bus, msg, path);\n return true;\n }\n } else if (ifaceName === 'org.freedesktop.DBus.Peer') {\n if (member === 'Ping' && !signature) {\n bus._connection.message({\n type: METHOD_RETURN,\n serial: bus._serial++,\n replySerial: msg.serial,\n destination: msg.sender\n });\n return true;\n } else if (member === 'GetMachineId' && !signature) {\n const machineId = fs.readFileSync('/var/lib/dbus/machine-id').toString().trim();\n bus._connection.message({\n type: METHOD_RETURN,\n serial: bus._serial++,\n replySerial: msg.serial,\n destination: msg.sender,\n signature: 's',\n body: [machineId]\n });\n return true;\n }\n }\n\n return false;\n}\n\nfunction handleMessage (msg, bus) {\n let {\n path,\n member,\n signature\n } = msg;\n\n const ifaceName = msg.interface;\n\n signature = signature || '';\n\n if (handleStdIfaces(bus, msg)) {\n return true;\n }\n\n if (!bus._serviceObjects[path]) {\n return false;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n if (!iface) {\n return false;\n }\n\n const methods = iface.$methods || {};\n for (const m of Object.keys(methods)) {\n const method = methods[m];\n let result = null;\n\n const handleError = (e) => {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n };\n\n if (method.name === member && method.inSignature === signature) {\n try {\n result = method.fn.apply(iface, msg.body);\n } catch (e) {\n handleError(e);\n return true;\n }\n\n const sendReply = (body) => {\n if (method.noReply) return;\n if (body === undefined) {\n body = [];\n } else if (method.outSignatureTree.length === 1) {\n body = [body];\n } else if (method.outSignatureTree.length === 0) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${method.name} was not expected to return a body.`);\n } else if (!Array.isArray(body)) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${method.name} expected to return multiple arguments in an array (signature: '${method.outSignature}')`);\n }\n\n if (method.outSignatureTree.length !== body.length) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${m} returned the wrong number of arguments (got ${body.length} expected ${method.outSignatureTree.length}) for signature '${method.outSignature}'`);\n }\n\n bus.send(Message.newMethodReturn(msg, method.outSignature, body));\n };\n\n if (result && result.constructor === Promise) {\n result.then(sendReply).catch(handleError);\n } else {\n sendReply(result);\n }\n\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = handleMessage;\n","const { Message } = require('../message-type');\nconst Interface = require('./interface').Interface;\nconst assertObjectPathValid = require('../validators').assertObjectPathValid;\n\nclass ServiceObject {\n constructor (path, bus) {\n assertObjectPathValid(path);\n this.path = path;\n this.bus = bus;\n this.interfaces = {};\n this._handlers = {};\n }\n\n addInterface (iface) {\n if (!(iface instanceof Interface)) {\n throw new Error(`object.addInterface takes an Interface as the first argument (got ${iface})`);\n }\n if (this.interfaces[iface.$name]) {\n throw new Error(`an interface with name '${iface.$name}' is already exported on this object`);\n }\n this.interfaces[iface.$name] = iface;\n const that = this;\n\n const propertiesChangedHandler = function (changedProperties, invalidatedProperties) {\n const body = [\n iface.$name,\n changedProperties,\n invalidatedProperties\n ];\n that.bus.send(Message.newSignal(that.path, 'org.freedesktop.DBus.Properties', 'PropertiesChanged', 'sa{sv}as', body));\n };\n\n const signalHandler = function (options, result) {\n // TODO lots of repeated code with the method handler here\n const {\n signature,\n signatureTree,\n name\n } = options;\n if (result === undefined) {\n result = [];\n } else if (signatureTree.length === 1) {\n result = [result];\n } else if (!Array.isArray(result)) {\n throw new Error(`signal ${iface.$name}.${name} expected to return multiple arguments in an array (signature: '${signature}')`);\n }\n\n if (signatureTree.length !== result.length) {\n throw new Error(`signal ${iface.$name}.${name} returned the wrong number of arguments (got ${result.length} expected ${signatureTree.length}) for signature '${signature}'`);\n }\n\n that.bus.send(Message.newSignal(that.path, iface.$name, name, signature, result));\n };\n\n this._handlers[iface.$name] = {\n propertiesChanged: propertiesChangedHandler,\n signal: signalHandler\n };\n\n iface.$emitter.on('signal', signalHandler);\n iface.$emitter.on('properties-changed', propertiesChangedHandler);\n }\n\n removeInterface (iface) {\n if (!(iface instanceof Interface)) {\n throw new Error(`object.removeInterface takes an Interface as the first argument (got ${iface})`);\n }\n if (!this.interfaces[iface.$name]) {\n throw new Error(`Interface ${iface.$name} not exported on this object`);\n }\n const handlers = this._handlers[iface.$name];\n iface.$emitter.removeListener('signal', handlers.signal);\n iface.$emitter.removeListener('properties-changed', handlers.propertiesChanged);\n delete this._handlers[iface.$name];\n delete this.interfaces[iface.$name];\n }\n\n introspect () {\n const interfaces = ServiceObject.defaultInterfaces();\n\n for (const i of Object.keys(this.interfaces)) {\n const iface = this.interfaces[i];\n interfaces.push(iface.$introspect());\n }\n\n return interfaces;\n }\n\n static defaultInterfaces () {\n return [\n {\n $: { name: 'org.freedesktop.DBus.Introspectable' },\n method: [\n {\n $: { name: 'Introspect' },\n arg: [\n {\n $: { name: 'data', direction: 'out', type: 's' }\n }\n ]\n }\n ]\n },\n {\n $: { name: 'org.freedesktop.DBus.Peer' },\n method: [\n {\n $: { name: 'GetMachineId' },\n arg: [\n { $: { direction: 'out', name: 'machine_uuid', type: 's' } }\n ]\n },\n {\n $: { name: 'Ping' }\n }\n ]\n },\n {\n $: { name: 'org.freedesktop.DBus.Properties' },\n method: [\n {\n $: { name: 'Get' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'out', type: 'v' } }\n ]\n },\n {\n $: { name: 'Set' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 'v' } }\n ]\n },\n {\n $: { name: 'GetAll' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'out', type: 'a{sv}' } }\n ]\n }\n ],\n signal: [\n {\n $: { name: 'PropertiesChanged' },\n arg: [\n { $: { type: 's' } },\n { $: { type: 'a{sv}' } },\n { $: { type: 'as' } }\n ]\n }\n ]\n }\n ];\n }\n}\n\nmodule.exports = ServiceObject;\n","// Generated by CoffeeScript 1.12.7\n(function() {\n exports.defaults = {\n \"0.1\": {\n explicitCharkey: false,\n trim: true,\n normalize: true,\n normalizeTags: false,\n attrkey: \"@\",\n charkey: \"#\",\n explicitArray: false,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: false,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n childkey: '@@',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n emptyTag: ''\n },\n \"0.2\": {\n explicitCharkey: false,\n trim: false,\n normalize: false,\n normalizeTags: false,\n attrkey: \"$\",\n charkey: \"_\",\n explicitArray: true,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: true,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n preserveChildrenOrder: false,\n childkey: '$$',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n rootName: 'root',\n xmldec: {\n 'version': '1.0',\n 'encoding': 'UTF-8',\n 'standalone': true\n },\n doctype: null,\n renderOpts: {\n 'pretty': true,\n 'indent': ' ',\n 'newline': '\\n'\n },\n headless: false,\n chunkSize: 10000,\n emptyTag: '',\n cdata: false\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n getValue = function(obj) {\n if (isFunction(obj.valueOf)) {\n return obj.valueOf();\n } else {\n return obj;\n }\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n module.exports.getValue = getValue;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMImplementation;\n\n module.exports = XMLDOMImplementation = (function() {\n function XMLDOMImplementation() {}\n\n XMLDOMImplementation.prototype.hasFeature = function(feature, version) {\n return true;\n };\n\n XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createHTMLDocument = function(title) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLDOMImplementation;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMErrorHandler;\n\n module.exports = XMLDOMErrorHandler = (function() {\n function XMLDOMErrorHandler() {}\n\n XMLDOMErrorHandler.prototype.handleError = function(error) {\n throw new Error(error);\n };\n\n return XMLDOMErrorHandler;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMStringList;\n\n module.exports = XMLDOMStringList = (function() {\n function XMLDOMStringList(arr) {\n this.arr = arr || [];\n }\n\n Object.defineProperty(XMLDOMStringList.prototype, 'length', {\n get: function() {\n return this.arr.length;\n }\n });\n\n XMLDOMStringList.prototype.item = function(index) {\n return this.arr[index] || null;\n };\n\n XMLDOMStringList.prototype.contains = function(str) {\n return this.arr.indexOf(str) !== -1;\n };\n\n return XMLDOMStringList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;\n\n XMLDOMErrorHandler = require('./XMLDOMErrorHandler');\n\n XMLDOMStringList = require('./XMLDOMStringList');\n\n module.exports = XMLDOMConfiguration = (function() {\n function XMLDOMConfiguration() {\n var clonedSelf;\n this.defaultParams = {\n \"canonical-form\": false,\n \"cdata-sections\": false,\n \"comments\": false,\n \"datatype-normalization\": false,\n \"element-content-whitespace\": true,\n \"entities\": true,\n \"error-handler\": new XMLDOMErrorHandler(),\n \"infoset\": true,\n \"validate-if-schema\": false,\n \"namespaces\": true,\n \"namespace-declarations\": true,\n \"normalize-characters\": false,\n \"schema-location\": '',\n \"schema-type\": '',\n \"split-cdata-sections\": true,\n \"validate\": false,\n \"well-formed\": true\n };\n this.params = clonedSelf = Object.create(this.defaultParams);\n }\n\n Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {\n get: function() {\n return new XMLDOMStringList(Object.keys(this.defaultParams));\n }\n });\n\n XMLDOMConfiguration.prototype.getParameter = function(name) {\n if (this.params.hasOwnProperty(name)) {\n return this.params[name];\n } else {\n return null;\n }\n };\n\n XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {\n return true;\n };\n\n XMLDOMConfiguration.prototype.setParameter = function(name, value) {\n if (value != null) {\n return this.params[name] = value;\n } else {\n return delete this.params[name];\n }\n };\n\n return XMLDOMConfiguration;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Element: 1,\n Attribute: 2,\n Text: 3,\n CData: 4,\n EntityReference: 5,\n EntityDeclaration: 6,\n ProcessingInstruction: 7,\n Comment: 8,\n Document: 9,\n DocType: 10,\n DocumentFragment: 11,\n NotationDeclaration: 12,\n Declaration: 201,\n Raw: 202,\n AttributeDeclaration: 203,\n ElementDeclaration: 204,\n Dummy: 205\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLNode;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.value = this.stringify.attValue(value);\n this.type = NodeType.Attribute;\n this.isId = false;\n this.schemaTypeInfo = null;\n }\n\n Object.defineProperty(XMLAttribute.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'specified', {\n get: function() {\n return true;\n }\n });\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.attribute(this, this.options.writer.filterOptions(options));\n };\n\n XMLAttribute.prototype.debugInfo = function(name) {\n name = name || this.name;\n if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else {\n return \"attribute: {\" + name + \"}, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLAttribute.prototype.isEqualNode = function(node) {\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.value !== this.value) {\n return false;\n }\n return true;\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNamedNodeMap;\n\n module.exports = XMLNamedNodeMap = (function() {\n function XMLNamedNodeMap(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {\n get: function() {\n return Object.keys(this.nodes).length || 0;\n }\n });\n\n XMLNamedNodeMap.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItem = function(name) {\n return this.nodes[name];\n };\n\n XMLNamedNodeMap.prototype.setNamedItem = function(node) {\n var oldNode;\n oldNode = this.nodes[node.nodeName];\n this.nodes[node.nodeName] = node;\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.removeNamedItem = function(name) {\n var oldNode;\n oldNode = this.nodes[name];\n delete this.nodes[name];\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.item = function(index) {\n return this.nodes[Object.keys(this.nodes)[index]] || null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLNamedNodeMap;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n var child, j, len, ref1;\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name. \" + this.debugInfo());\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.Element;\n this.attribs = {};\n this.schemaTypeInfo = null;\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.type === NodeType.Document) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n if (parent.children) {\n ref1 = parent.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n if (child.type === NodeType.DocType) {\n child.name = this.name;\n break;\n }\n }\n }\n }\n }\n\n Object.defineProperty(XMLElement.prototype, 'tagName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'id', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'className', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'classList', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'attributes', {\n get: function() {\n if (!this.attributeMap || !this.attributeMap.nodes) {\n this.attributeMap = new XMLNamedNodeMap(this.attribs);\n }\n return this.attributeMap;\n }\n });\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attribs = {};\n ref1 = this.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attribs[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, j, len;\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo());\n }\n name = getValue(name);\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n attName = name[j];\n delete this.attribs[attName];\n }\n } else {\n delete this.attribs[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.element(this, this.options.writer.filterOptions(options));\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.getAttribute = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].value;\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttribute = function(name, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNode = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name];\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttributeNode = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNode = function(oldAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNodeNS = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.hasAttribute = function(name) {\n return this.attribs.hasOwnProperty(name);\n };\n\n XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttribute = function(name, isId) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].isId;\n } else {\n return isId;\n }\n };\n\n XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.isEqualNode = function(node) {\n var i, j, ref1;\n if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.attribs.length !== this.attribs.length) {\n return false;\n }\n for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {\n if (!this.attribs[i].isEqualNode(node.attribs[i])) {\n return false;\n }\n }\n return true;\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCharacterData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCharacterData = (function(superClass) {\n extend(XMLCharacterData, superClass);\n\n function XMLCharacterData(parent) {\n XMLCharacterData.__super__.constructor.call(this, parent);\n this.value = '';\n }\n\n Object.defineProperty(XMLCharacterData.prototype, 'data', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'length', {\n get: function() {\n return this.value.length;\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n XMLCharacterData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCharacterData.prototype.substringData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.appendData = function(arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.insertData = function(offset, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.deleteData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.replaceData = function(offset, count, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.isEqualNode = function(node) {\n if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.data !== this.data) {\n return false;\n }\n return true;\n };\n\n return XMLCharacterData;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCData, XMLCharacterData,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text. \" + this.debugInfo());\n }\n this.name = \"#cdata-section\";\n this.type = NodeType.CData;\n this.value = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.cdata(this, this.options.writer.filterOptions(options));\n };\n\n return XMLCData;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLComment,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text. \" + this.debugInfo());\n }\n this.name = \"#comment\";\n this.type = NodeType.Comment;\n this.value = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.comment(this, this.options.writer.filterOptions(options));\n };\n\n return XMLComment;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.type = NodeType.Declaration;\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.declaration(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name. \" + this.debugInfo(elementName));\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type. \" + this.debugInfo(elementName));\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default. \" + this.debugInfo(elementName));\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n this.elementName = this.stringify.name(elementName);\n this.type = NodeType.AttributeDeclaration;\n this.attributeName = this.stringify.name(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n if (defaultValue) {\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n }\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD entity name. \" + this.debugInfo(name));\n }\n if (value == null) {\n throw new Error(\"Missing DTD entity value. \" + this.debugInfo(name));\n }\n this.pe = !!pe;\n this.name = this.stringify.name(name);\n this.type = NodeType.EntityDeclaration;\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n this.internal = true;\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity. \" + this.debugInfo(name));\n }\n this.internal = false;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity. \" + this.debugInfo(name));\n }\n }\n }\n\n Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {\n get: function() {\n return this.nData || null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {\n get: function() {\n return null;\n }\n });\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.ElementDeclaration;\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD notation name. \" + this.debugInfo(name));\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.NotationDeclaration;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var child, i, len, ref, ref1, ref2;\n XMLDocType.__super__.constructor.call(this, parent);\n this.type = NodeType.DocType;\n if (parent.children) {\n ref = parent.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.Element) {\n this.name = child.name;\n break;\n }\n }\n }\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;\n }\n if (sysID == null) {\n ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n Object.defineProperty(XMLDocType.prototype, 'entities', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if ((child.type === NodeType.EntityDeclaration) && !child.pe) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'notations', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.NotationDeclaration) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'internalSubset', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.docType(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n XMLDocType.prototype.isEqualNode = function(node) {\n if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.name !== this.name) {\n return false;\n }\n if (node.publicId !== this.publicId) {\n return false;\n }\n if (node.systemId !== this.systemId) {\n return false;\n }\n return true;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text. \" + this.debugInfo());\n }\n this.type = NodeType.Raw;\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.raw(this, this.options.writer.filterOptions(options));\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text. \" + this.debugInfo());\n }\n this.name = \"#text\";\n this.type = NodeType.Text;\n this.value = this.stringify.text(text);\n }\n\n Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLText.prototype, 'wholeText', {\n get: function() {\n var next, prev, str;\n str = '';\n prev = this.previousSibling;\n while (prev) {\n str = prev.data + str;\n prev = prev.previousSibling;\n }\n str += this.data;\n next = this.nextSibling;\n while (next) {\n str = str + next.data;\n next = next.nextSibling;\n }\n return str;\n }\n });\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.text(this, this.options.writer.filterOptions(options));\n };\n\n XMLText.prototype.splitText = function(offset) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLText.prototype.replaceWholeText = function(content) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLText;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target. \" + this.debugInfo());\n }\n this.type = NodeType.ProcessingInstruction;\n this.target = this.stringify.insTarget(target);\n this.name = this.target;\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));\n };\n\n XMLProcessingInstruction.prototype.isEqualNode = function(node) {\n if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.target !== this.target) {\n return false;\n }\n return true;\n };\n\n return XMLProcessingInstruction;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDummy, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDummy = (function(superClass) {\n extend(XMLDummy, superClass);\n\n function XMLDummy(parent) {\n XMLDummy.__super__.constructor.call(this, parent);\n this.type = NodeType.Dummy;\n }\n\n XMLDummy.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLDummy.prototype.toString = function(options) {\n return '';\n };\n\n return XMLDummy;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNodeList;\n\n module.exports = XMLNodeList = (function() {\n function XMLNodeList(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNodeList.prototype, 'length', {\n get: function() {\n return this.nodes.length || 0;\n }\n });\n\n XMLNodeList.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNodeList.prototype.item = function(index) {\n return this.nodes[index] || null;\n };\n\n return XMLNodeList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Disconnected: 1,\n Preceding: 2,\n Following: 4,\n Contains: 8,\n ContainedBy: 16,\n ImplementationSpecific: 32\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,\n hasProp = {}.hasOwnProperty;\n\n ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n XMLDummy = null;\n\n NodeType = null;\n\n XMLNodeList = null;\n\n XMLNamedNodeMap = null;\n\n DocumentPosition = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent1) {\n this.parent = parent1;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.value = null;\n this.children = [];\n this.baseURI = null;\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n XMLDummy = require('./XMLDummy');\n NodeType = require('./NodeType');\n XMLNodeList = require('./XMLNodeList');\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n DocumentPosition = require('./DocumentPosition');\n }\n }\n\n Object.defineProperty(XMLNode.prototype, 'nodeName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeValue', {\n get: function() {\n return this.value;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'parentNode', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'childNodes', {\n get: function() {\n if (!this.childNodeList || !this.childNodeList.nodes) {\n this.childNodeList = new XMLNodeList(this.children);\n }\n return this.childNodeList;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'firstChild', {\n get: function() {\n return this.children[0] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'lastChild', {\n get: function() {\n return this.children[this.children.length - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'previousSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nextSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i + 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'ownerDocument', {\n get: function() {\n return this.document() || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'textContent', {\n get: function() {\n var child, j, len, ref2, str;\n if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {\n str = '';\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (child.textContent) {\n str += child.textContent;\n }\n }\n return str;\n } else {\n return null;\n }\n },\n set: function(value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLNode.prototype.setParent = function(parent) {\n var child, j, len, ref2, results;\n this.parent = parent;\n if (parent) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n }\n ref2 = this.children;\n results = [];\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n results.push(child.setParent(this));\n }\n return results;\n };\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;\n lastChild = null;\n if (attributes === null && (text == null)) {\n ref2 = [{}, null], attributes = ref2[0], text = ref2[1];\n }\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];\n }\n if (name != null) {\n name = getValue(name);\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {\n lastChild = this.dummy();\n } else if (isObject(val) && isEmpty(val)) {\n lastChild = this.element(key);\n } else if (!this.options.keepNullNodes && (val == null)) {\n lastChild = this.dummy();\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.element(val);\n } else {\n lastChild = this.element(key);\n lastChild.element(val);\n }\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else if (!this.options.keepNullNodes && text === null) {\n lastChild = this.dummy();\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name + \". \" + this.debugInfo());\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, newChild, refChild, removed;\n if (name != null ? name.type : void 0) {\n newChild = name;\n refChild = attributes;\n newChild.setParent(this);\n if (refChild) {\n i = children.indexOf(refChild);\n removed = children.splice(i);\n children.push(newChild);\n Array.prototype.push.apply(children, removed);\n } else {\n children.push(newChild);\n }\n return newChild;\n } else {\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n }\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref2;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element. \" + this.debugInfo());\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref2;\n if (name != null) {\n name = getValue(name);\n }\n attributes || (attributes = {});\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n if (isObject(value)) {\n this.element(value);\n }\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.dummy = function() {\n var child;\n child = new XMLDummy(this);\n return child;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children.length === 0) {\n doc.children.unshift(xmldec);\n } else if (doc.children[0].type === NodeType.Declaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref2, ref3;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref2 = doc.children;\n for (i = j = 0, len = ref2.length; j < len; i = ++j) {\n child = ref2[i];\n if (child.type === NodeType.DocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref3 = doc.children;\n for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {\n child = ref3[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node. \" + this.debugInfo());\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node. \" + this.debugInfo());\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.debugInfo = function(name) {\n var ref2, ref3;\n name = name || this.name;\n if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {\n return \"\";\n } else if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {\n return \"node: <\" + name + \">\";\n } else {\n return \"node: <\" + name + \">, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n XMLNode.prototype.replaceChild = function(newChild, oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.removeChild = function(oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.appendChild = function(newChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.hasChildNodes = function() {\n return this.children.length !== 0;\n };\n\n XMLNode.prototype.cloneNode = function(deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.normalize = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isSupported = function(feature, version) {\n return true;\n };\n\n XMLNode.prototype.hasAttributes = function() {\n return this.attribs.length !== 0;\n };\n\n XMLNode.prototype.compareDocumentPosition = function(other) {\n var ref, res;\n ref = this;\n if (ref === other) {\n return 0;\n } else if (this.document() !== other.document()) {\n res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;\n if (Math.random() < 0.5) {\n res |= DocumentPosition.Preceding;\n } else {\n res |= DocumentPosition.Following;\n }\n return res;\n } else if (ref.isAncestor(other)) {\n return DocumentPosition.Contains | DocumentPosition.Preceding;\n } else if (ref.isDescendant(other)) {\n return DocumentPosition.Contains | DocumentPosition.Following;\n } else if (ref.isPreceding(other)) {\n return DocumentPosition.Preceding;\n } else {\n return DocumentPosition.Following;\n }\n };\n\n XMLNode.prototype.isSameNode = function(other) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupPrefix = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupNamespaceURI = function(prefix) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isEqualNode = function(node) {\n var i, j, ref2;\n if (node.nodeType !== this.nodeType) {\n return false;\n }\n if (node.children.length !== this.children.length) {\n return false;\n }\n for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {\n if (!this.children[i].isEqualNode(node.children[i])) {\n return false;\n }\n }\n return true;\n };\n\n XMLNode.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.setUserData = function(key, data, handler) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.getUserData = function(key) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.contains = function(other) {\n if (!other) {\n return false;\n }\n return other === this || this.isDescendant(other);\n };\n\n XMLNode.prototype.isDescendant = function(node) {\n var child, isDescendantChild, j, len, ref2;\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (node === child) {\n return true;\n }\n isDescendantChild = child.isDescendant(node);\n if (isDescendantChild) {\n return true;\n }\n }\n return false;\n };\n\n XMLNode.prototype.isAncestor = function(node) {\n return node.isDescendant(this);\n };\n\n XMLNode.prototype.isPreceding = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos < thisPos;\n }\n };\n\n XMLNode.prototype.isFollowing = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos > thisPos;\n }\n };\n\n XMLNode.prototype.treePosition = function(node) {\n var found, pos;\n pos = 0;\n found = false;\n this.foreachTreeNode(this.document(), function(childNode) {\n pos++;\n if (!found && childNode === node) {\n return found = true;\n }\n });\n if (found) {\n return pos;\n } else {\n return -1;\n }\n };\n\n XMLNode.prototype.foreachTreeNode = function(node, func) {\n var child, j, len, ref2, res;\n node || (node = this.document());\n ref2 = node.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (res = func(child)) {\n return res;\n } else {\n res = this.foreachTreeNode(child, func);\n if (res) {\n return res;\n }\n }\n }\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalName = bind(this.assertLegalName, this);\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.options = options;\n if (!this.options.version) {\n this.options.version = '1.0';\n }\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.name = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalName('' + val || '');\n };\n\n XMLStringifier.prototype.text = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.textEscape('' + val || ''));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n val = val.replace(']]>', ']]]]><![CDATA[>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.attEscape(val = '' + val || ''));\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var regex, res;\n if (this.options.noValidation) {\n return str;\n }\n regex = '';\n if (this.options.version === '1.0') {\n regex = /[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n } else if (this.options.version === '1.1') {\n regex = /[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n }\n return str;\n };\n\n XMLStringifier.prototype.assertLegalName = function(str) {\n var regex;\n if (this.options.noValidation) {\n return str;\n }\n this.assertLegalChar(str);\n regex = /^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])([\\x2D\\.0-:A-Z_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n if (!str.match(regex)) {\n throw new Error(\"Invalid character in name\");\n }\n return str;\n };\n\n XMLStringifier.prototype.textEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\r/g, '
');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/\"/g, '"').replace(/\\t/g, '	').replace(/\\n/g, '
').replace(/\\r/g, '
');\n };\n\n return XMLStringifier;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n None: 0,\n OpenTag: 1,\n InsideTag: 2,\n CloseTag: 3\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,\n hasProp = {}.hasOwnProperty;\n\n assign = require('./Utility').assign;\n\n NodeType = require('./NodeType');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDummy = require('./XMLDummy');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLWriterBase = (function() {\n function XMLWriterBase(options) {\n var key, ref, value;\n options || (options = {});\n this.options = options;\n ref = options.writer || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[\"_\" + key] = this[key];\n this[key] = value;\n }\n }\n\n XMLWriterBase.prototype.filterOptions = function(options) {\n var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;\n options || (options = {});\n options = assign({}, this.options, options);\n filteredOptions = {\n writer: this\n };\n filteredOptions.pretty = options.pretty || false;\n filteredOptions.allowEmpty = options.allowEmpty || false;\n filteredOptions.indent = (ref = options.indent) != null ? ref : ' ';\n filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\\n';\n filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;\n filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;\n filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';\n if (filteredOptions.spaceBeforeSlash === true) {\n filteredOptions.spaceBeforeSlash = ' ';\n }\n filteredOptions.suppressPrettyCount = 0;\n filteredOptions.user = {};\n filteredOptions.state = WriterState.None;\n return filteredOptions;\n };\n\n XMLWriterBase.prototype.indent = function(node, options, level) {\n var indentLevel;\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else if (options.pretty) {\n indentLevel = (level || 0) + options.offset + 1;\n if (indentLevel > 0) {\n return new Array(indentLevel).join(options.indent);\n }\n }\n return '';\n };\n\n XMLWriterBase.prototype.endline = function(node, options, level) {\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else {\n return options.newline;\n }\n };\n\n XMLWriterBase.prototype.attribute = function(att, options, level) {\n var r;\n this.openAttribute(att, options, level);\n r = ' ' + att.name + '=\"' + att.value + '\"';\n this.closeAttribute(att, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.cdata = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<![CDATA[';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ']]>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.comment = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!-- ';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ' -->' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.declaration = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?xml';\n options.state = WriterState.InsideTag;\n r += ' version=\"' + node.version + '\"';\n if (node.encoding != null) {\n r += ' encoding=\"' + node.encoding + '\"';\n }\n if (node.standalone != null) {\n r += ' standalone=\"' + node.standalone + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.docType = function(node, options, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n r += '<!DOCTYPE ' + node.root().name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children.length > 0) {\n r += ' [';\n r += this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += ']';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;\n level || (level = 0);\n prettySuppressed = false;\n r = '';\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r += this.indent(node, options, level) + '<' + node.name;\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n r += '>';\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n r += '>';\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n r += this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n if (options.dontPrettyTextNodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {\n options.suppressPrettyCount++;\n prettySuppressed = true;\n break;\n }\n }\n }\n r += '>' + this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += this.indent(node, options, level) + '</' + node.name + '>';\n if (prettySuppressed) {\n options.suppressPrettyCount--;\n }\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n }\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.writeChildNode = function(node, options, level) {\n switch (node.type) {\n case NodeType.CData:\n return this.cdata(node, options, level);\n case NodeType.Comment:\n return this.comment(node, options, level);\n case NodeType.Element:\n return this.element(node, options, level);\n case NodeType.Raw:\n return this.raw(node, options, level);\n case NodeType.Text:\n return this.text(node, options, level);\n case NodeType.ProcessingInstruction:\n return this.processingInstruction(node, options, level);\n case NodeType.Dummy:\n return '';\n case NodeType.Declaration:\n return this.declaration(node, options, level);\n case NodeType.DocType:\n return this.docType(node, options, level);\n case NodeType.AttributeDeclaration:\n return this.dtdAttList(node, options, level);\n case NodeType.ElementDeclaration:\n return this.dtdElement(node, options, level);\n case NodeType.EntityDeclaration:\n return this.dtdEntity(node, options, level);\n case NodeType.NotationDeclaration:\n return this.dtdNotation(node, options, level);\n default:\n throw new Error(\"Unknown XML node type: \" + node.constructor.name);\n }\n };\n\n XMLWriterBase.prototype.processingInstruction = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?';\n options.state = WriterState.InsideTag;\n r += node.target;\n if (node.value) {\n r += ' ' + node.value;\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.raw = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.text = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdAttList = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ATTLIST';\n options.state = WriterState.InsideTag;\n r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;\n if (node.defaultValueType !== '#DEFAULT') {\n r += ' ' + node.defaultValueType;\n }\n if (node.defaultValue) {\n r += ' \"' + node.defaultValue + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdElement = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ELEMENT';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name + ' ' + node.value;\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdEntity = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ENTITY';\n options.state = WriterState.InsideTag;\n if (node.pe) {\n r += ' %';\n }\n r += ' ' + node.name;\n if (node.value) {\n r += ' \"' + node.value + '\"';\n } else {\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.nData) {\n r += ' NDATA ' + node.nData;\n }\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdNotation = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!NOTATION';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.pubID) {\n r += ' PUBLIC \"' + node.pubID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.openNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.closeNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.openAttribute = function(att, options, level) {};\n\n XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc, options) {\n var child, i, len, r, ref;\n options = this.filterOptions(options);\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, 0);\n }\n if (options.pretty && r.slice(-options.newline.length) === options.newline) {\n r = r.slice(0, -options.newline.length);\n }\n return r;\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDOMConfiguration = require('./XMLDOMConfiguration');\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n this.name = \"#document\";\n this.type = NodeType.Document;\n this.documentURI = null;\n this.domConfig = new XMLDOMConfiguration();\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n }\n\n Object.defineProperty(XMLDocument.prototype, 'implementation', {\n value: new XMLDOMImplementation()\n });\n\n Object.defineProperty(XMLDocument.prototype, 'doctype', {\n get: function() {\n var child, i, len, ref;\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.DocType) {\n return child;\n }\n }\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'documentElement', {\n get: function() {\n return this.rootObject || null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {\n get: function() {\n return false;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].encoding;\n } else {\n return null;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].standalone === 'yes';\n } else {\n return false;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].version;\n } else {\n return \"1.0\";\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'URL', {\n get: function() {\n return this.documentURI;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'origin', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'compatMode', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'characterSet', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'contentType', {\n get: function() {\n return null;\n }\n });\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n writerOptions = {};\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer;\n }\n return writer.document(this, writer.filterOptions(writerOptions));\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.document(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocument.prototype.createElement = function(tagName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createDocumentFragment = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTextNode = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createComment = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createCDATASection = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createProcessingInstruction = function(target, data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttribute = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEntityReference = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.importNode = function(importedNode, deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementById = function(elementId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.adoptNode = function(source) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.normalizeDocument = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEvent = function(eventInterface) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createRange = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;\n\n NodeType = require('./NodeType');\n\n XMLDocument = require('./XMLDocument');\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n this.name = \"?xml\";\n this.type = NodeType.Document;\n options || (options = {});\n writerOptions = {};\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.writer = options.writer;\n this.writerOptions = this.writer.filterOptions(writerOptions);\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.createChildNode = function(node) {\n var att, attName, attributes, child, i, len, ref1, ref2;\n switch (node.type) {\n case NodeType.CData:\n this.cdata(node.value);\n break;\n case NodeType.Comment:\n this.comment(node.value);\n break;\n case NodeType.Element:\n attributes = {};\n ref1 = node.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n attributes[attName] = att.value;\n }\n this.node(node.name, attributes);\n break;\n case NodeType.Dummy:\n this.dummy();\n break;\n case NodeType.Raw:\n this.raw(node.value);\n break;\n case NodeType.Text:\n this.text(node.value);\n break;\n case NodeType.ProcessingInstruction:\n this.instruction(node.target, node.value);\n break;\n default:\n throw new Error(\"This XML node type is not supported in a JS object: \" + node.constructor.name);\n }\n ref2 = node.children;\n for (i = 0, len = ref2.length; i < len; i++) {\n child = ref2[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.dummy = function() {\n return this;\n };\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name.\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node. \" + this.debugInfo(name));\n }\n this.openCurrent();\n name = getValue(name);\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n var child, i, len, oldValidationFlag, ref1, root;\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n this.dtdElement.apply(this, arguments);\n } else {\n if (Array.isArray(name) || isObject(name) || isFunction(name)) {\n oldValidationFlag = this.options.noValidation;\n this.options.noValidation = true;\n root = new XMLDocument(this.options).element('TEMP_ROOT');\n root.element(name);\n this.options.noValidation = oldValidationFlag;\n ref1 = root.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n } else {\n this.node(name, attributes, text);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode. \" + this.debugInfo(name));\n }\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node.\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name.\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node.\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent.\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n var att, chunk, name, ref1;\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {\n this.root = node;\n }\n chunk = '';\n if (node.type === NodeType.Element) {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;\n ref1 = node.attribs;\n for (name in ref1) {\n if (!hasProp.call(ref1, name)) continue;\n att = ref1[name];\n chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);\n }\n chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;\n if (node.pubID && node.sysID) {\n chunk += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n chunk += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children) {\n chunk += ' [';\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.CloseTag;\n chunk += '>';\n }\n chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.onData(chunk, this.currentLevel);\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n var chunk;\n if (!node.isClosed) {\n chunk = '';\n this.writerOptions.state = WriterState.CloseTag;\n if (node.type === NodeType.Element) {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n } else {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.writerOptions.state = WriterState.None;\n this.onData(chunk, this.currentLevel);\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk, level) {\n this.documentStarted = true;\n return this.onDataCallback(chunk, level + 1);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.debugInfo = function(name) {\n if (name == null) {\n return \"\";\n } else {\n return \"node: <\" + name + \">\";\n }\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n this.stream = stream;\n XMLStreamWriter.__super__.constructor.call(this, options);\n }\n\n XMLStreamWriter.prototype.endline = function(node, options, level) {\n if (node.isLastRootNode && options.state === WriterState.CloseTag) {\n return '';\n } else {\n return XMLStreamWriter.__super__.endline.call(this, node, options, level);\n }\n };\n\n XMLStreamWriter.prototype.document = function(doc, options) {\n var child, i, j, k, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n child = ref[i];\n child.isLastRootNode = i === doc.children.length - 1;\n }\n options = this.filterOptions(options);\n ref1 = doc.children;\n results = [];\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n child = ref1[k];\n results.push(this.writeChildNode(child, options, 0));\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));\n };\n\n XMLStreamWriter.prototype.cdata = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.comment = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.docType = function(node, options, level) {\n var child, j, len, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level));\n this.stream.write('<!DOCTYPE ' + node.root().name);\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n if (node.children.length > 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (j = 0, len = ref.length; j < len; j++) {\n child = ref[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(']');\n }\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '>');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level) + '<' + node.name);\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n this.stream.write('>');\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '/>');\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n this.stream.write('>');\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n this.stream.write('>' + this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref1 = node.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');\n }\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.raw = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.text = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n NodeType = require('./NodeType');\n\n WriterState = require('./WriterState');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name.\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.dtd(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n module.exports.implementation = new XMLDOMImplementation();\n\n module.exports.nodeType = NodeType;\n\n module.exports.writerState = WriterState;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n hasProp = {}.hasOwnProperty;\n\n builder = require('xmlbuilder');\n\n defaults = require('./defaults').defaults;\n\n requiresCDATA = function(entry) {\n return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n };\n\n wrapCDATA = function(entry) {\n return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n };\n\n escapeCDATA = function(entry) {\n return entry.replace(']]>', ']]]]><![CDATA[>');\n };\n\n exports.Builder = (function() {\n function Builder(opts) {\n var key, ref, value;\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n }\n\n Builder.prototype.buildObject = function(rootObj) {\n var attrkey, charkey, render, rootElement, rootName;\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n rootName = Object.keys(rootObj)[0];\n rootObj = rootObj[rootName];\n } else {\n rootName = this.options.rootName;\n }\n render = (function(_this) {\n return function(element, obj) {\n var attr, child, entry, index, key, value;\n if (typeof obj !== 'object') {\n if (_this.options.cdata && requiresCDATA(obj)) {\n element.raw(wrapCDATA(obj));\n } else {\n element.txt(obj);\n }\n } else if (Array.isArray(obj)) {\n for (index in obj) {\n if (!hasProp.call(obj, index)) continue;\n child = obj[index];\n for (key in child) {\n entry = child[key];\n element = render(element.ele(key), entry).up();\n }\n }\n } else {\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n child = obj[key];\n if (key === attrkey) {\n if (typeof child === \"object\") {\n for (attr in child) {\n value = child[attr];\n element = element.att(attr, value);\n }\n }\n } else if (key === charkey) {\n if (_this.options.cdata && requiresCDATA(child)) {\n element = element.raw(wrapCDATA(child));\n } else {\n element = element.txt(child);\n }\n } else if (Array.isArray(child)) {\n for (index in child) {\n if (!hasProp.call(child, index)) continue;\n entry = child[index];\n if (typeof entry === 'string') {\n if (_this.options.cdata && requiresCDATA(entry)) {\n element = element.ele(key).raw(wrapCDATA(entry)).up();\n } else {\n element = element.ele(key, entry).up();\n }\n } else {\n element = render(element.ele(key), entry).up();\n }\n }\n } else if (typeof child === \"object\") {\n element = render(element.ele(key), child).up();\n } else {\n if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n element = element.ele(key).raw(wrapCDATA(child)).up();\n } else {\n if (child == null) {\n child = '';\n }\n element = element.ele(key, child.toString()).up();\n }\n }\n }\n }\n return element;\n };\n })(this);\n rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n headless: this.options.headless,\n allowSurrogateChars: this.options.allowSurrogateChars\n });\n return render(rootElement, rootObj).end(this.options.renderOpts);\n };\n\n return Builder;\n\n })();\n\n}).call(this);\n",";(function (sax) {\n // wrapper for non-node envs\n sax.parser = function (strict, opt) {\n return new SAXParser(strict, opt)\n }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment',\n 'sgmlDecl',\n 'textNode',\n 'tagName',\n 'doctype',\n 'procInstName',\n 'procInstBody',\n 'entity',\n 'attribName',\n 'attribValue',\n 'cdata',\n 'script',\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace',\n ]\n\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.encoding = null;\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.opt.maxEntityCount = parser.opt.maxEntityCount || 512\n parser.opt.maxEntityDepth = parser.opt.maxEntityDepth || 4\n parser.entityCount = parser.entityDepth = 0\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES =\n parser.strictEntities ?\n Object.create(sax.XML_ENTITIES)\n : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F() {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers(parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers(parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () {\n end(this)\n },\n write: write,\n resume: function () {\n this.error = null\n return this\n },\n close: function () {\n return this.write(null)\n },\n flush: function () {\n flushBuffers(this)\n },\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream(strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function determineBufferEncoding(data, isEnd) {\n // BOM-based detection is the most reliable signal when present.\n if (data.length >= 2) {\n if (data[0] === 0xff && data[1] === 0xfe) {\n return 'utf-16le'\n }\n\n if (data[0] === 0xfe && data[1] === 0xff) {\n return 'utf-16be'\n }\n }\n\n if (data.length >= 3 && data[0] === 0xef && data[1] === 0xbb && data[2] === 0xbf) {\n return 'utf8'\n }\n\n if (data.length >= 4) {\n // XML documents without a BOM still start with \"<?xml\", which is enough\n // to distinguish UTF-16LE/BE from UTF-8 by looking at the zero bytes.\n if (data[0] === 0x3c && data[1] === 0x00 && data[2] === 0x3f && data[3] === 0x00) {\n return 'utf-16le'\n }\n\n if (data[0] === 0x00 && data[1] === 0x3c && data[2] === 0x00 && data[3] === 0x3f) {\n return 'utf-16be'\n }\n\n return 'utf8'\n }\n\n return isEnd ? 'utf8' : null\n }\n\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n this._decoderBuffer = null\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false,\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream,\n },\n })\n\n SAXStream.prototype._decodeBuffer = function (data, isEnd) {\n if (this._decoderBuffer) {\n // Keep incomplete leading bytes until we have enough data to infer the\n // stream encoding, then decode the buffered prefix together with the next chunk.\n data = Buffer.concat([this._decoderBuffer, data])\n this._decoderBuffer = null\n }\n\n if (!this._decoder) {\n var encoding = determineBufferEncoding(data, isEnd)\n if (!encoding) {\n // A very short first chunk may not contain enough bytes to detect the\n // encoding yet, so defer decoding until the next write/end call.\n this._decoderBuffer = data\n return ''\n }\n\n // Store the detected transport encoding so strict mode can compare it\n // with the optional encoding declared in the XML prolog later on.\n this._parser.encoding = encoding\n this._decoder = new TextDecoder(encoding)\n }\n\n return this._decoder.decode(data, { stream: !isEnd })\n }\n\n SAXStream.prototype.write = function (data) {\n if (\n typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)\n ) {\n data = this._decodeBuffer(data, false)\n } else if (this._decoderBuffer) {\n // Flush any buffered binary prefix before handling a string chunk.\n // This only matters if the caller mixes Buffer and string writes (used in test).\n var remaining = this._decodeBuffer(Buffer.alloc(0), true)\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n // Flush any remaining decoded data from the TextDecoder\n if (this._decoderBuffer) {\n var finalChunk = this._decodeBuffer(Buffer.alloc(0), true)\n if (finalChunk) {\n this._parser.write(finalChunk)\n this.emit('data', finalChunk)\n }\n } else if (this._decoder) {\n var remaining = this._decoder.decode()\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args =\n arguments.length === 1 ?\n [arguments[0]]\n : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATAre = /^\\[CDATA\\[$/i\n var DOCTYPEre = /^DOCTYPE$/i\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace(c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote(c) {\n return c === '\"' || c === \"'\"\n }\n\n function isAttribEnd(c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch(regex, c) {\n return regex.test(c)\n }\n\n function notMatch(regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++, // <script> ... <\n }\n\n sax.XML_ENTITIES = Object.assign(Object.create(null), {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n })\n\n sax.ENTITIES = Object.assign(Object.create(null), {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n AElig: 198,\n Aacute: 193,\n Acirc: 194,\n Agrave: 192,\n Aring: 197,\n Atilde: 195,\n Auml: 196,\n Ccedil: 199,\n ETH: 208,\n Eacute: 201,\n Ecirc: 202,\n Egrave: 200,\n Euml: 203,\n Iacute: 205,\n Icirc: 206,\n Igrave: 204,\n Iuml: 207,\n Ntilde: 209,\n Oacute: 211,\n Ocirc: 212,\n Ograve: 210,\n Oslash: 216,\n Otilde: 213,\n Ouml: 214,\n THORN: 222,\n Uacute: 218,\n Ucirc: 219,\n Ugrave: 217,\n Uuml: 220,\n Yacute: 221,\n aacute: 225,\n acirc: 226,\n aelig: 230,\n agrave: 224,\n aring: 229,\n atilde: 227,\n auml: 228,\n ccedil: 231,\n eacute: 233,\n ecirc: 234,\n egrave: 232,\n eth: 240,\n euml: 235,\n iacute: 237,\n icirc: 238,\n igrave: 236,\n iuml: 239,\n ntilde: 241,\n oacute: 243,\n ocirc: 244,\n ograve: 242,\n oslash: 248,\n otilde: 245,\n ouml: 246,\n szlig: 223,\n thorn: 254,\n uacute: 250,\n ucirc: 251,\n ugrave: 249,\n uuml: 252,\n yacute: 253,\n yuml: 255,\n copy: 169,\n reg: 174,\n nbsp: 160,\n iexcl: 161,\n cent: 162,\n pound: 163,\n curren: 164,\n yen: 165,\n brvbar: 166,\n sect: 167,\n uml: 168,\n ordf: 170,\n laquo: 171,\n not: 172,\n shy: 173,\n macr: 175,\n deg: 176,\n plusmn: 177,\n sup1: 185,\n sup2: 178,\n sup3: 179,\n acute: 180,\n micro: 181,\n para: 182,\n middot: 183,\n cedil: 184,\n ordm: 186,\n raquo: 187,\n frac14: 188,\n frac12: 189,\n frac34: 190,\n iquest: 191,\n times: 215,\n divide: 247,\n OElig: 338,\n oelig: 339,\n Scaron: 352,\n scaron: 353,\n Yuml: 376,\n fnof: 402,\n circ: 710,\n tilde: 732,\n Alpha: 913,\n Beta: 914,\n Gamma: 915,\n Delta: 916,\n Epsilon: 917,\n Zeta: 918,\n Eta: 919,\n Theta: 920,\n Iota: 921,\n Kappa: 922,\n Lambda: 923,\n Mu: 924,\n Nu: 925,\n Xi: 926,\n Omicron: 927,\n Pi: 928,\n Rho: 929,\n Sigma: 931,\n Tau: 932,\n Upsilon: 933,\n Phi: 934,\n Chi: 935,\n Psi: 936,\n Omega: 937,\n alpha: 945,\n beta: 946,\n gamma: 947,\n delta: 948,\n epsilon: 949,\n zeta: 950,\n eta: 951,\n theta: 952,\n iota: 953,\n kappa: 954,\n lambda: 955,\n mu: 956,\n nu: 957,\n xi: 958,\n omicron: 959,\n pi: 960,\n rho: 961,\n sigmaf: 962,\n sigma: 963,\n tau: 964,\n upsilon: 965,\n phi: 966,\n chi: 967,\n psi: 968,\n omega: 969,\n thetasym: 977,\n upsih: 978,\n piv: 982,\n ensp: 8194,\n emsp: 8195,\n thinsp: 8201,\n zwnj: 8204,\n zwj: 8205,\n lrm: 8206,\n rlm: 8207,\n ndash: 8211,\n mdash: 8212,\n lsquo: 8216,\n rsquo: 8217,\n sbquo: 8218,\n ldquo: 8220,\n rdquo: 8221,\n bdquo: 8222,\n dagger: 8224,\n Dagger: 8225,\n bull: 8226,\n hellip: 8230,\n permil: 8240,\n prime: 8242,\n Prime: 8243,\n lsaquo: 8249,\n rsaquo: 8250,\n oline: 8254,\n frasl: 8260,\n euro: 8364,\n image: 8465,\n weierp: 8472,\n real: 8476,\n trade: 8482,\n alefsym: 8501,\n larr: 8592,\n uarr: 8593,\n rarr: 8594,\n darr: 8595,\n harr: 8596,\n crarr: 8629,\n lArr: 8656,\n uArr: 8657,\n rArr: 8658,\n dArr: 8659,\n hArr: 8660,\n forall: 8704,\n part: 8706,\n exist: 8707,\n empty: 8709,\n nabla: 8711,\n isin: 8712,\n notin: 8713,\n ni: 8715,\n prod: 8719,\n sum: 8721,\n minus: 8722,\n lowast: 8727,\n radic: 8730,\n prop: 8733,\n infin: 8734,\n ang: 8736,\n and: 8743,\n or: 8744,\n cap: 8745,\n cup: 8746,\n int: 8747,\n there4: 8756,\n sim: 8764,\n cong: 8773,\n asymp: 8776,\n ne: 8800,\n equiv: 8801,\n le: 8804,\n ge: 8805,\n sub: 8834,\n sup: 8835,\n nsub: 8836,\n sube: 8838,\n supe: 8839,\n oplus: 8853,\n otimes: 8855,\n perp: 8869,\n sdot: 8901,\n lceil: 8968,\n rceil: 8969,\n lfloor: 8970,\n rfloor: 8971,\n lang: 9001,\n rang: 9002,\n loz: 9674,\n spades: 9824,\n clubs: 9827,\n hearts: 9829,\n diams: 9830,\n })\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit(parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function getDeclaredEncoding(body) {\n var match = body && body.match(/(?:^|\\s)encoding\\s*=\\s*(['\"])([^'\"]+)\\1/i)\n return match ? match[2] : null\n }\n\n function normalizeEncodingName(encoding) {\n if (!encoding) {\n return null\n }\n\n return encoding.toLowerCase().replace(/[^a-z0-9]/g, '')\n }\n\n function encodingsMatch(detectedEncoding, declaredEncoding) {\n const detected = normalizeEncodingName(detectedEncoding)\n const declared = normalizeEncodingName(declaredEncoding)\n\n if (!detected || !declared) {\n return true\n }\n\n if (declared === 'utf16') {\n return detected === 'utf16le' || detected === 'utf16be'\n }\n\n return detected === declared\n }\n\n function validateXmlDeclarationEncoding(parser, data) {\n if (\n !parser.strict ||\n !parser.encoding ||\n !data ||\n data.name !== 'xml'\n ) {\n return\n }\n\n var declaredEncoding = getDeclaredEncoding(data.body)\n if (\n declaredEncoding &&\n !encodingsMatch(parser.encoding, declaredEncoding)\n ) {\n strictFail(\n parser,\n 'XML declaration encoding ' +\n declaredEncoding +\n ' does not match detected stream encoding ' +\n parser.encoding.toUpperCase()\n )\n }\n }\n\n function emitNode(parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText(parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts(opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error(parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er +=\n '\\nLine: ' +\n parser.line +\n '\\nColumn: ' +\n parser.column +\n '\\nChar: ' +\n parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end(parser) {\n if (parser.sawRoot && !parser.closedRoot)\n strictFail(parser, 'Unclosed root tag')\n if (\n parser.state !== S.BEGIN &&\n parser.state !== S.BEGIN_WHITESPACE &&\n parser.state !== S.TEXT\n ) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail(parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag(parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = (parser.tag = { name: parser.tagName, attributes: {} })\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname(name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? ['', name] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib(parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (\n parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)\n ) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(\n parser,\n 'xml: prefix must be bound to ' +\n XML_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else if (\n local === 'xmlns' &&\n parser.attribValue !== XMLNS_NAMESPACE\n ) {\n strictFail(\n parser,\n 'xmlns: prefix must be bound to ' +\n XMLNS_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue,\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag(parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(parser.tagName)\n )\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p],\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : tag.ns[prefix] || ''\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri,\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(prefix)\n )\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag(parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = (parser.tag = parser.tags.pop())\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity(parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (\n isNaN(num) ||\n numStr.toLowerCase() !== entity ||\n num < 0 ||\n num > 0x10ffff ||\n !isXmlChar(num)\n ) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n // Returns true if `num` is a code point that matches the XML `Char`\n // production, false otherwise. Character references that resolve to a\n // character outside this range (e.g. surrogates or restricted control\n // characters) are not well-formed.\n // https://www.w3.org/TR/REC-xml/#NT-Char\n // https://www.w3.org/TR/REC-xml/#wf-Legalchar\n function isXmlChar(num) {\n return (\n num === 0x9 ||\n num === 0xa ||\n num === 0xd ||\n (num >= 0x20 && num <= 0xd7ff) ||\n (num >= 0xe000 && num <= 0xfffd) ||\n (num >= 0x10000 && num <= 0x10ffff)\n )\n }\n\n function beginWhiteSpace(parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt(chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write(chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(\n parser,\n 'Cannot write after close. Assign an onready handler.'\n )\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (\n c === '<' &&\n !(parser.sawRoot && parser.closedRoot && !parser.strict)\n ) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (\n !isWhitespace(c) &&\n (!parser.sawRoot || parser.closedRoot)\n ) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue\n }\n\n if (\n parser.doctype &&\n parser.doctype !== true &&\n parser.sgmlDecl\n ) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if (CDATAre.test(parser.sgmlDecl + c)) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if (DOCTYPEre.test(parser.sgmlDecl + c)) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(\n parser,\n 'Inappropriately located doctype declaration'\n )\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n var starti = i - 1\n while (c && c !== ']') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.cdata += chunk.substring(starti, i - 1)\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n const procInstEndData = {\n name: parser.procInstName,\n body: parser.procInstBody,\n }\n validateXmlDeclarationEncoding(parser, procInstEndData)\n emitNode(parser, 'onprocessinginstruction', procInstEndData)\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(\n parser,\n 'Forward-slash in opening tag not followed by >'\n )\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: '',\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName + c\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (\n parser.opt.unparsedEntities &&\n !Object.values(sax.XML_ENTITIES).includes(parsedEntity)\n ) {\n if ((parser.entityCount += 1) > parser.opt.maxEntityCount) {\n error(\n parser,\n 'Parsed entity count exceeds max entity count'\n )\n }\n\n if ((parser.entityDepth += 1) > parser.opt.maxEntityDepth) {\n error(\n parser,\n 'Parsed entity depth exceeds max entity depth'\n )\n }\n\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n parser.entityDepth -= 1\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (\n isMatch(parser.entity.length ? entityBody : entityStart, c)\n ) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n ;(function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true,\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n })()\n }\n})(typeof exports === 'undefined' ? (this.sax = {}) : exports)\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n exports.stripBOM = function(str) {\n if (str[0] === '\\uFEFF') {\n return str.substring(1);\n } else {\n return str;\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var prefixMatch;\n\n prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n exports.normalize = function(str) {\n return str.toLowerCase();\n };\n\n exports.firstCharLowerCase = function(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n };\n\n exports.stripPrefix = function(str) {\n return str.replace(prefixMatch, '');\n };\n\n exports.parseNumbers = function(str) {\n if (!isNaN(str)) {\n str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n }\n return str;\n };\n\n exports.parseBooleans = function(str) {\n if (/^(?:true|false)$/i.test(str)) {\n str = str.toLowerCase() === 'true';\n }\n return str;\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var bom, defaults, defineProperty, events, isEmpty, processItem, processors, sax, setImmediate,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n sax = require('sax');\n\n events = require('events');\n\n bom = require('./bom');\n\n processors = require('./processors');\n\n setImmediate = require('timers').setImmediate;\n\n defaults = require('./defaults').defaults;\n\n isEmpty = function(thing) {\n return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n };\n\n processItem = function(processors, item, key) {\n var i, len, process;\n for (i = 0, len = processors.length; i < len; i++) {\n process = processors[i];\n item = process(item, key);\n }\n return item;\n };\n\n defineProperty = function(obj, key, value) {\n var descriptor;\n descriptor = Object.create(null);\n descriptor.value = value;\n descriptor.writable = true;\n descriptor.enumerable = true;\n descriptor.configurable = true;\n return Object.defineProperty(obj, key, descriptor);\n };\n\n exports.Parser = (function(superClass) {\n extend(Parser, superClass);\n\n function Parser(opts) {\n this.parseStringPromise = bind(this.parseStringPromise, this);\n this.parseString = bind(this.parseString, this);\n this.reset = bind(this.reset, this);\n this.assignOrPush = bind(this.assignOrPush, this);\n this.processAsync = bind(this.processAsync, this);\n var key, ref, value;\n if (!(this instanceof exports.Parser)) {\n return new exports.Parser(opts);\n }\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n if (this.options.xmlns) {\n this.options.xmlnskey = this.options.attrkey + \"ns\";\n }\n if (this.options.normalizeTags) {\n if (!this.options.tagNameProcessors) {\n this.options.tagNameProcessors = [];\n }\n this.options.tagNameProcessors.unshift(processors.normalize);\n }\n this.reset();\n }\n\n Parser.prototype.processAsync = function() {\n var chunk, err;\n try {\n if (this.remaining.length <= this.options.chunkSize) {\n chunk = this.remaining;\n this.remaining = '';\n this.saxParser = this.saxParser.write(chunk);\n return this.saxParser.close();\n } else {\n chunk = this.remaining.substr(0, this.options.chunkSize);\n this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n this.saxParser = this.saxParser.write(chunk);\n return setImmediate(this.processAsync);\n }\n } catch (error1) {\n err = error1;\n if (!this.saxParser.errThrown) {\n this.saxParser.errThrown = true;\n return this.emit(err);\n }\n }\n };\n\n Parser.prototype.assignOrPush = function(obj, key, newValue) {\n if (!(key in obj)) {\n if (!this.options.explicitArray) {\n return defineProperty(obj, key, newValue);\n } else {\n return defineProperty(obj, key, [newValue]);\n }\n } else {\n if (!(obj[key] instanceof Array)) {\n defineProperty(obj, key, [obj[key]]);\n }\n return obj[key].push(newValue);\n }\n };\n\n Parser.prototype.reset = function() {\n var attrkey, charkey, ontext, stack;\n this.removeAllListeners();\n this.saxParser = sax.parser(this.options.strict, {\n trim: false,\n normalize: false,\n xmlns: this.options.xmlns\n });\n this.saxParser.errThrown = false;\n this.saxParser.onerror = (function(_this) {\n return function(error) {\n _this.saxParser.resume();\n if (!_this.saxParser.errThrown) {\n _this.saxParser.errThrown = true;\n return _this.emit(\"error\", error);\n }\n };\n })(this);\n this.saxParser.onend = (function(_this) {\n return function() {\n if (!_this.saxParser.ended) {\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n this.saxParser.ended = false;\n this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n this.resultObject = null;\n stack = [];\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n this.saxParser.onopentag = (function(_this) {\n return function(node) {\n var key, newValue, obj, processedKey, ref;\n obj = {};\n obj[charkey] = \"\";\n if (!_this.options.ignoreAttrs) {\n ref = node.attributes;\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n obj[attrkey] = {};\n }\n newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];\n processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;\n if (_this.options.mergeAttrs) {\n _this.assignOrPush(obj, processedKey, newValue);\n } else {\n defineProperty(obj[attrkey], processedKey, newValue);\n }\n }\n }\n obj[\"#name\"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;\n if (_this.options.xmlns) {\n obj[_this.options.xmlnskey] = {\n uri: node.uri,\n local: node.local\n };\n }\n return stack.push(obj);\n };\n })(this);\n this.saxParser.onclosetag = (function(_this) {\n return function() {\n var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;\n obj = stack.pop();\n nodeName = obj[\"#name\"];\n if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n delete obj[\"#name\"];\n }\n if (obj.cdata === true) {\n cdata = obj.cdata;\n delete obj.cdata;\n }\n s = stack[stack.length - 1];\n if (obj[charkey].match(/^\\s*$/) && !cdata) {\n emptyStr = obj[charkey];\n delete obj[charkey];\n } else {\n if (_this.options.trim) {\n obj[charkey] = obj[charkey].trim();\n }\n if (_this.options.normalize) {\n obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n if (isEmpty(obj)) {\n if (typeof _this.options.emptyTag === 'function') {\n obj = _this.options.emptyTag();\n } else {\n obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n }\n }\n if (_this.options.validator != null) {\n xpath = \"/\" + ((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = stack.length; i < len; i++) {\n node = stack[i];\n results.push(node[\"#name\"]);\n }\n return results;\n })()).concat(nodeName).join(\"/\");\n (function() {\n var err;\n try {\n return obj = _this.options.validator(xpath, s && s[nodeName], obj);\n } catch (error1) {\n err = error1;\n return _this.emit(\"error\", err);\n }\n })();\n }\n if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n if (!_this.options.preserveChildrenOrder) {\n node = {};\n if (_this.options.attrkey in obj) {\n node[_this.options.attrkey] = obj[_this.options.attrkey];\n delete obj[_this.options.attrkey];\n }\n if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n node[_this.options.charkey] = obj[_this.options.charkey];\n delete obj[_this.options.charkey];\n }\n if (Object.getOwnPropertyNames(obj).length > 0) {\n node[_this.options.childkey] = obj;\n }\n obj = node;\n } else if (s) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n objClone = {};\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n defineProperty(objClone, key, obj[key]);\n }\n s[_this.options.childkey].push(objClone);\n delete obj[\"#name\"];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n }\n if (stack.length > 0) {\n return _this.assignOrPush(s, nodeName, obj);\n } else {\n if (_this.options.explicitRoot) {\n old = obj;\n obj = {};\n defineProperty(obj, nodeName, old);\n }\n _this.resultObject = obj;\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n ontext = (function(_this) {\n return function(text) {\n var charChild, s;\n s = stack[stack.length - 1];\n if (s) {\n s[charkey] += text;\n if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n charChild = {\n '#name': '__text__'\n };\n charChild[charkey] = text;\n if (_this.options.normalize) {\n charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n s[_this.options.childkey].push(charChild);\n }\n return s;\n }\n };\n })(this);\n this.saxParser.ontext = ontext;\n return this.saxParser.oncdata = (function(_this) {\n return function(text) {\n var s;\n s = ontext(text);\n if (s) {\n return s.cdata = true;\n }\n };\n })(this);\n };\n\n Parser.prototype.parseString = function(str, cb) {\n var err;\n if ((cb != null) && typeof cb === \"function\") {\n this.on(\"end\", function(result) {\n this.reset();\n return cb(null, result);\n });\n this.on(\"error\", function(err) {\n this.reset();\n return cb(err);\n });\n }\n try {\n str = str.toString();\n if (str.trim() === '') {\n this.emit(\"end\", null);\n return true;\n }\n str = bom.stripBOM(str);\n if (this.options.async) {\n this.remaining = str;\n setImmediate(this.processAsync);\n return this.saxParser;\n }\n return this.saxParser.write(str).close();\n } catch (error1) {\n err = error1;\n if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n this.emit('error', err);\n return this.saxParser.errThrown = true;\n } else if (this.saxParser.ended) {\n throw err;\n }\n }\n };\n\n Parser.prototype.parseStringPromise = function(str) {\n return new Promise((function(_this) {\n return function(resolve, reject) {\n return _this.parseString(str, function(err, value) {\n if (err) {\n return reject(err);\n } else {\n return resolve(value);\n }\n });\n };\n })(this));\n };\n\n return Parser;\n\n })(events);\n\n exports.parseString = function(str, a, b) {\n var cb, options, parser;\n if (b != null) {\n if (typeof b === 'function') {\n cb = b;\n }\n if (typeof a === 'object') {\n options = a;\n }\n } else {\n if (typeof a === 'function') {\n cb = a;\n }\n options = {};\n }\n parser = new exports.Parser(options);\n return parser.parseString(str, cb);\n };\n\n exports.parseStringPromise = function(str, a) {\n var options, parser;\n if (typeof a === 'object') {\n options = a;\n }\n parser = new exports.Parser(options);\n return parser.parseStringPromise(str);\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, parser, processors,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n defaults = require('./defaults');\n\n builder = require('./builder');\n\n parser = require('./parser');\n\n processors = require('./processors');\n\n exports.defaults = defaults.defaults;\n\n exports.processors = processors;\n\n exports.ValidationError = (function(superClass) {\n extend(ValidationError, superClass);\n\n function ValidationError(message) {\n this.message = message;\n }\n\n return ValidationError;\n\n })(Error);\n\n exports.Builder = builder.Builder;\n\n exports.Parser = parser.Parser;\n\n exports.parseString = parser.parseString;\n\n exports.parseStringPromise = parser.parseStringPromise;\n\n}).call(this);\n","const EventEmitter = require('events');\nconst {\n isInterfaceNameValid,\n isMemberNameValid\n} = require('../validators');\n\nclass ProxyListener {\n constructor (signal, iface) {\n this.refcount = 0;\n this.fn = (msg) => {\n const { body, signature, sender } = msg;\n if (iface.$object.bus._nameOwners[iface.$object.name] !== sender) {\n return;\n }\n if (signature !== signal.signature) {\n console.error(`warning: got signature ${signature} for signal ${msg.interface}.${signal.name} (expected ${signal.signature})`);\n return;\n }\n iface.emit.apply(iface, [signal.name].concat(body));\n };\n }\n}\n\n/**\n * A class to represent a proxy to an interface exported on the bus to be used\n * by a client. A `ProxyInterface` is gotten by interface name from the {@link\n * ProxyObject} from the {@link MessageBus}. This class is constructed\n * dynamically based on the introspection data on the bus. The advertised\n * methods of the interface are exposed as class methods that take arguments\n * and return a Promsie that resolves to types specified by the type signature\n * of the DBus method. The `ProxyInterface` is an `EventEmitter` that emits\n * events with types that are specified by the type signature of the DBus\n * signal advertised on the bus when that signal is received.\n *\n * If an interface method call returns an error, `ProxyInterface` method call\n * will throw a {@link DBusError}.\n *\n * @example\n * // this demonstrates the use of the standard\n * // `org.freedesktop.DBus.Properties` interface for an interface that exports\n * // some properties.\n * let bus = dbus.sessionBus();\n * let obj = await bus.getProxyObject('org.test.bus_name', '/org/test/path');\n * let properties = obj.getInterface('org.freedesktop.DBus.Properties');\n * // the `Get` method provided by this interface takes two strings and returns\n * // a Variant\n * let someProperty = await properties.Get('org.test.interface_name', 'SomeProperty');\n * // the `PropertiesChanged` signal provided by this interface will emit an\n * // event on the interface with its specified signal arguments.\n * properties.on('PropertiesChanged', (props, invalidated) => {});\n */\nclass ProxyInterface extends EventEmitter {\n /**\n * Create a new `ProxyInterface`. This constructor should not be called\n * directly. Use {@link ProxyObject#getInterface} to get a proxy interface.\n */\n constructor (name, object) {\n super();\n this.$name = name;\n this.$object = object;\n this.$properties = [];\n this.$methods = [];\n this.$signals = [];\n this.$listeners = {};\n\n const getEventDetails = (eventName) => {\n const signal = this.$signals.find((s) => s.name === eventName);\n if (!signal) {\n return [null, null];\n }\n\n const detailedEvent = JSON.stringify({\n path: this.$object.path,\n interface: this.$name,\n member: eventName\n });\n\n return [signal, detailedEvent];\n };\n\n this.on('removeListener', (eventName, listener) => {\n const [signal, detailedEvent] = getEventDetails(eventName);\n\n if (!signal) {\n return;\n }\n\n const proxyListener = this._getEventListener(signal);\n\n if (proxyListener.refcount <= 0) {\n return;\n }\n\n proxyListener.refcount -= 1;\n if (proxyListener.refcount > 0) {\n return;\n }\n\n this.$object.bus._removeMatch(this._signalMatchRuleString(eventName))\n .catch(error => {\n this.$object.bus.emit('error', error);\n });\n this.$object.bus._signals.removeListener(detailedEvent, proxyListener.fn);\n });\n\n this.on('newListener', (eventName, listener) => {\n const [signal, detailedEvent] = getEventDetails(eventName);\n\n if (!signal) {\n return;\n }\n\n const proxyListener = this._getEventListener(signal);\n\n if (proxyListener.refcount > 0) {\n proxyListener.refcount += 1;\n return;\n }\n\n proxyListener.refcount = 1;\n\n this.$object.bus._addMatch(this._signalMatchRuleString(eventName))\n .catch(error => {\n this.$object.bus.emit('error', error);\n });\n this.$object.bus._signals.on(detailedEvent, proxyListener.fn);\n });\n }\n\n _signalMatchRuleString (eventName) {\n return `type='signal',sender=${this.$object.name},interface='${this.$name}',path='${this.$object.path}',member='${eventName}'`;\n }\n\n _getEventListener (signal) {\n if (this.$listeners[signal.name]) {\n return this.$listeners[signal.name];\n }\n\n this.$listeners[signal.name] = new ProxyListener(signal, this);\n return this.$listeners[signal.name];\n }\n\n static _fromXml (object, xml) {\n if (!('$' in xml) || !isInterfaceNameValid(xml.$.name)) {\n return null;\n }\n\n const name = xml.$.name;\n const iface = new ProxyInterface(name, object);\n\n if (Array.isArray(xml.property)) {\n for (const p of xml.property) {\n // TODO validation\n if ('$' in p) {\n iface.$properties.push(p.$);\n }\n }\n }\n\n if (Array.isArray(xml.signal)) {\n for (const s of xml.signal) {\n if (!('$' in s) || !isMemberNameValid(s.$.name)) {\n continue;\n }\n const signal = {\n name: s.$.name,\n signature: ''\n };\n\n if (Array.isArray(s.arg)) {\n for (const a of s.arg) {\n if ('$' in a && 'type' in a.$) {\n // TODO signature validation\n signal.signature += a.$.type;\n }\n }\n }\n\n iface.$signals.push(signal);\n }\n }\n\n if (Array.isArray(xml.method)) {\n for (const m of xml.method) {\n if (!('$' in m) || !isMemberNameValid(m.$.name)) {\n continue;\n }\n const method = {\n name: m.$.name,\n inSignature: '',\n outSignature: ''\n };\n\n if (Array.isArray(m.arg)) {\n for (const a of m.arg) {\n if (!('$' in a) || typeof a.$.type !== 'string') {\n continue;\n }\n const arg = a.$;\n if (arg.direction === 'in') {\n method.inSignature += arg.type;\n } else if (arg.direction === 'out') {\n method.outSignature += arg.type;\n }\n }\n }\n\n // TODO signature validation\n iface.$methods.push(method);\n\n iface[method.name] = function (...args) {\n const objArgs = [\n name,\n method.name,\n method.inSignature,\n method.outSignature\n ].concat(args);\n return object._callMethod.apply(object, objArgs);\n };\n }\n }\n\n return iface;\n }\n}\n\nmodule.exports = ProxyInterface;\n","const xml2js = require('xml2js');\nconst { parseSignature } = require('../signature');\nconst ProxyInterface = require('./proxy-interface');\nconst { Message } = require('../message-type');\nconst {\n assertBusNameValid,\n assertObjectPathValid,\n isObjectPathValid\n} = require('../validators');\n\n/**\n * @class\n * A class that represents a proxy to a DBus object. The `ProxyObject` contains\n * `ProxyInterface`s and a list of `node`s which are object paths of child\n * objects. A `ProxyObject` is created through {@link\n * MessageBus#getProxyObject} for a given well-known name and object path.\n * An interface can be gotten through {@link ProxyObject#getInterface} and can\n * be used to call methods and receive signals for that interface.\n *\n * @example\n * let bus = dbus.sessionBus();\n * let obj = await bus.getProxyObject('org.freedesktop.DBus', '/org/freedesktop/DBus');\n * let peer = obj.getInterface('org.freedesktop.DBus.Peer')\n * await peer.Ping();\n */\nclass ProxyObject {\n /**\n * Create a new `ProxyObject`. This constructor should not be called\n * directly. Use {@link MessageBus#getProxyObject} to get a proxy object.\n */\n constructor (bus, name, path) {\n assertBusNameValid(name);\n assertObjectPathValid(path);\n /**\n * The {@link MessageBus} this name belongs to.\n * @memberof ProxyObject#\n * @member {MessageBus} bus\n */\n this.bus = bus;\n /**\n * The well-known bus name for this proxy object as a string.\n * @memberof ProxyObject#\n * @member {string} name\n */\n this.name = name;\n /**\n * The object path for this `ProxyObject`.\n * @memberof ProxyObject#\n * @member {string} path\n */\n this.path = path;\n /**\n * The object path child nodes for this `ProxyObject` as an array of\n * strings\n * @memberof ProxyObject#\n * @member {string[]} nodes\n */\n this.nodes = [];\n\n /**\n * A map of interface names to [ProxyInterfaces]{@link ProxyInterface} for\n * this `ProxyObject`.\n * @memberof ProxyObject#\n * @member {Object.<string, ProxyInterface>} interfaces\n */\n this.interfaces = {};\n this._parser = new xml2js.Parser();\n }\n\n /**\n * Get a {@link ProxyInterface} for the given interface name.\n *\n * @param name {string} - the interface name to get.\n * @returns {ProxyInterface} - the proxy interface with this name exported by\n * the object or `undefined` if the object does not export an interface with\n * that name.\n * @throws {Error} Throws an error if the interface is not found on this object.\n */\n getInterface (name) {\n if (!Object.keys(this.interfaces).includes(name)) {\n throw new Error(`interface not found in proxy object: ${name}`);\n }\n return this.interfaces[name];\n }\n\n _initXml (xml) {\n const root = xml.node;\n\n if (Array.isArray(root.node)) {\n for (const n of root.node) {\n if (!('$' in n)) {\n continue;\n }\n const name = n.$.name;\n const path = `${this.path}/${name}`;\n if (isObjectPathValid(path)) {\n this.nodes.push(path);\n }\n }\n }\n\n if (Array.isArray(root.interface)) {\n for (const i of root.interface) {\n const iface = ProxyInterface._fromXml(this, i);\n if (iface !== null) {\n this.interfaces[iface.$name] = iface;\n }\n }\n }\n }\n\n _init (xml) {\n return new Promise((resolve, reject) => {\n if (xml) {\n this._parser.parseString(xml, (err, data) => {\n if (err) {\n return reject(err);\n }\n this._initXml(data);\n\n const nameOwnerMessage = new Message({\n destination: 'org.freedesktop.DBus',\n path: '/org/freedesktop/DBus',\n interface: 'org.freedesktop.DBus',\n member: 'GetNameOwner',\n signature: 's',\n body: [this.name]\n });\n\n this.bus.call(nameOwnerMessage)\n .then((msg) => {\n this.bus._nameOwners[this.name] = msg.body[0];\n resolve(this);\n })\n .catch((err) => {\n if (err.type === 'org.freedesktop.DBus.Error.NameHasNoOwner') { return resolve(this); }\n return reject(err);\n });\n });\n } else {\n const introspectMessage = new Message({\n destination: this.name,\n path: this.path,\n interface: 'org.freedesktop.DBus.Introspectable',\n member: 'Introspect',\n signature: '',\n body: []\n });\n\n this.bus.call(introspectMessage)\n .then((msg) => {\n const xml = msg.body[0];\n this._parser.parseString(xml, (err, data) => {\n if (err) {\n return reject(err);\n }\n this._initXml(data);\n resolve(this);\n });\n })\n .catch((err) => {\n return reject(err);\n });\n }\n });\n }\n\n _callMethod (iface, member, inSignature, outSignature, ...args) {\n return new Promise((resolve, reject) => {\n args = args || [];\n\n const methodCallMessage = new Message({\n destination: this.name,\n interface: iface,\n path: this.path,\n member: member,\n signature: inSignature,\n body: args\n });\n\n this.bus.call(methodCallMessage)\n .then((msg) => {\n const outSignatureTree = parseSignature(outSignature);\n if (outSignatureTree.length === 0) {\n resolve(null);\n return;\n }\n if (outSignatureTree.length === 1) {\n resolve(msg.body[0]);\n } else {\n resolve(msg.body);\n }\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n}\n\nmodule.exports = ProxyObject;\n","const EventEmitter = require('events').EventEmitter;\nconst constants = require('./constants');\nconst handleMethod = require('./service/handlers');\nconst { DBusError } = require('./errors');\nconst { Message } = require('./message-type');\nconst ServiceObject = require('./service/object');\nconst xml2js = require('xml2js');\n\nconst {\n METHOD_CALL,\n METHOD_RETURN,\n ERROR,\n SIGNAL\n} = constants.MessageType;\n\nconst {\n NO_REPLY_EXPECTED\n} = constants.MessageFlag;\n\nconst {\n assertBusNameValid,\n assertObjectPathValid\n} = require('./validators');\n\nconst ProxyObject = require('./client/proxy-object');\n\nconst xmlHeader = '<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\\n';\n\n/**\n * @class\n * The `MessageBus` is a class for interacting with a DBus message bus capable\n * of requesting a service [`Name`]{@link module:interface~Name} to export an\n * [`Interface`]{@link module:interface~Interface}, or getting a proxy object\n * to interact with an existing name on the bus as a client. A `MessageBus` is\n * created with `dbus.sessionBus()` or `dbus.systemBus()` methods of the\n * dbus-next module.\n *\n * The `MessageBus` is an `EventEmitter` which emits the following events:\n * * `error` - The underlying connection to the bus has errored. After\n * receiving an `error` event, the `MessageBus` may be disconnected.\n * * `connected` - The bus is connected and ready to send and receive messages.\n * Before this event, messages are buffered.\n * * `message` - The bus has received a message. Called with the {@link\n * Message} that was received. This is part of the low-level api.\n *\n * @example\n * const dbus = require('dbus-next');\n * const bus = dbus.sessionBus();\n * // get a proxy object\n * let obj = await bus.getProxyObject('org.freedesktop.DBus', '/org/freedesktop/DBus');\n * // request a well-known name\n * await bus.requestName('org.test.name');\n */\nclass MessageBus extends EventEmitter {\n /**\n * Create a new `MessageBus`. This constructor is not to be called directly.\n * Use `dbus.sessionBus()` or `dbus.systemBus()` to set up the connection to\n * the bus.\n */\n constructor (conn) {\n super();\n this._builder = new xml2js.Builder({ headless: true });\n this._connection = conn;\n this._serial = 1;\n this._methodReturnHandlers = {};\n this._signals = new EventEmitter();\n this._nameOwners = {};\n this._methodHandlers = [];\n this._serviceObjects = {};\n\n // An object with match rule keys and refcount values. Used only by\n // the internal high-level function `_addMatch` for refcounting.\n this._matchRules = {};\n\n /**\n * The unique name of the bus connection. This will be `null` until the\n * `MessageBus` is connected.\n * @memberof MessageBus#\n * @member {string} name\n */\n this.name = null;\n\n const handleMessage = (msg) => {\n // Don't handle messages that aren't destined for us. This might happen\n // when we become a monitor.\n if (this.name && msg.destination) {\n if (msg.destination[0] === ':' && msg.destination !== this.name) {\n return;\n }\n if (this._nameOwners[msg.destination] &&\n this._nameOwners[msg.destination] !== this.name) {\n return;\n }\n }\n\n if (msg.type === METHOD_RETURN ||\n msg.type === ERROR) {\n const handler = this._methodReturnHandlers[msg.replySerial];\n if (handler) {\n delete this._methodReturnHandlers[msg.replySerial];\n handler(msg);\n }\n } else if (msg.type === SIGNAL) {\n // if this is a name owner changed message, cache the new name owner\n const { sender, path, iface, member } = msg;\n if (sender === 'org.freedesktop.DBus' &&\n path === '/org/freedesktop/DBus' &&\n iface === 'org.freedesktop.DBus' &&\n member === 'NameOwnerChanged') {\n const name = msg.body[0];\n const newOwner = msg.body[2];\n if (!name.startsWith(':')) {\n this._nameOwners[name] = newOwner;\n }\n }\n\n const mangled = JSON.stringify({\n path: msg.path,\n interface: msg.interface,\n member: msg.member\n });\n this._signals.emit(mangled, msg);\n } else {\n // methodCall (needs to be handled)\n let handled = false;\n\n for (const handler of this._methodHandlers) {\n // run installed method handlers first\n handled = handler(msg);\n if (handled) {\n break;\n }\n }\n\n if (!handled) {\n handled = handleMethod(msg, this);\n }\n\n if (!handled) {\n this.send(Message.newError(msg,\n 'org.freedesktop.DBus.Error.UnknownMethod',\n `Method '${msg.member}' on interface '${msg.interface || '(none)'}' does not exist`));\n }\n }\n };\n\n conn.on('message', (msg) => {\n try {\n // TODO: document this signal\n this.emit('message', msg);\n handleMessage(msg);\n } catch (e) {\n this.send(Message.newError(msg, 'com.github.dbus_next.Error', `The DBus library encountered an error.\\n${e.stack}`));\n }\n });\n\n conn.on('error', (err) => {\n // forward network and stream errors\n this.emit('error', err);\n });\n\n const helloMessage = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'Hello'\n });\n\n this.call(helloMessage)\n .then((msg) => {\n this.name = msg.body[0];\n this.emit('connect');\n })\n .catch((err) => {\n this.emit('error', err);\n throw new Error(err);\n });\n }\n\n /**\n * Get a {@link ProxyObject} on the bus for the given name and path for interacting\n * with a service as a client. The proxy object contains a list of the\n * [`ProxyInterface`s]{@link ProxyInterface} exported at the name and object path as well as a list\n * of `node`s.\n *\n * @param name {string} - the well-known name on the bus.\n * @param path {string} - the object path exported on the name.\n * @param [xml] {string} - xml introspection data.\n * @returns {Promise} - a Promise that resolves with the `ProxyObject`.\n */\n getProxyObject (name, path, xml) {\n const obj = new ProxyObject(this, name, path);\n return obj._init(xml);\n }\n\n /**\n * Request a well-known name on the bus.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n *\n * @param name {string} - the well-known name on the bus to request.\n * @param flags {NameFlag} - DBus name flags which affect the behavior of taking the name.\n * @returns {Promise} - a Promise that resolves with the {@link RequestNameReply}.\n */\n requestName (name, flags) {\n flags = flags || 0;\n return new Promise((resolve, reject) => {\n assertBusNameValid(name);\n const requestNameMessage = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'RequestName',\n signature: 'su',\n body: [name, flags]\n });\n this.call(requestNameMessage)\n .then((msg) => {\n return resolve(msg.body[0]);\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n\n /**\n * Release this name. Requests that the name should no longer be owned by the\n * {@link MessageBus}.\n *\n * @returns {Promise} A Promise that will resolve with the {@link ReleaseNameReply}.\n */\n releaseName (name) {\n return new Promise((resolve, reject) => {\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'ReleaseName',\n signature: 's',\n body: [name]\n });\n this.call(msg)\n .then((reply) => {\n return resolve(reply.body[0]);\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n\n /**\n * Disconnect this `MessageBus` from the bus.\n */\n disconnect () {\n this._connection.stream.end();\n this._signals.removeAllListeners();\n }\n\n /**\n * Get a new serial for this bus. These can be used to set the {@link\n * Message#serial} member to send the message on this bus.\n *\n * @returns {int} - A new serial for this bus.\n */\n newSerial () {\n return this._serial++;\n }\n\n /**\n * A function to call when a message of type {@link MessageType.METHOD_RETURN} is received. User handlers are run before\n * default handlers.\n *\n * @callback methodHandler\n * @param {Message} msg - The message to handle.\n * @returns {boolean} Return `true` if the message is handled and no further\n * handlers will run.\n */\n\n /**\n * Add a user method return handler. Remove the handler with {@link\n * MessageBus#removeMethodHandler}\n *\n * @param {methodHandler} - A function to handle a {@link Message} of type\n * {@link MessageType.METHOD_RETURN}. Takes the `Message` as the first\n * argument. Return `true` if the method is handled and no further handlers\n * will run.\n */\n addMethodHandler (fn) {\n this._methodHandlers.push(fn);\n }\n\n /**\n * Remove a user method return handler that was previously added with {@link\n * MessageBus#addMethodHandler}.\n *\n * @param {methodHandler} - A function that was previously added as a method handler.\n */\n removeMethodHandler (fn) {\n for (let i = 0; i < this._methodHandlers.length; ++i) {\n if (this._methodHandlers[i] === fn) {\n this._methodHandlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Send a {@link Message} of type {@link MessageType.METHOD_CALL} to the bus\n * and wait for the reply.\n *\n * @example\n * let message = new Message({\n * destination: 'org.freedesktop.DBus',\n * path: '/org/freedesktop/DBus',\n * interface: 'org.freedesktop.DBus',\n * member: 'ListNames'\n * });\n * let reply = await bus.call(message);\n *\n * @param {Message} msg - The message to send.\n * @returns {Promise} reply - A `Promise` that resolves to the {@link\n * Message} which is a reply to the call.\n */\n call (msg) {\n return new Promise((resolve, reject) => {\n if (!(msg instanceof Message)) {\n throw new Error('The call() method takes a Message class as the first argument.');\n }\n if (msg.type !== METHOD_CALL) {\n throw new Error('Only messages of type METHOD_CALL can expect a call reply.');\n }\n if (msg.serial === null || msg._sent) {\n msg.serial = this.newSerial();\n }\n msg._sent = true;\n if (msg.flags & NO_REPLY_EXPECTED) {\n resolve(null);\n } else {\n this._methodReturnHandlers[msg.serial] = (reply) => {\n this._nameOwners[msg.destination] = reply.sender;\n if (reply.type === ERROR) {\n return reject(new DBusError(reply.errorName, reply.body[0], reply));\n } else {\n return resolve(reply);\n }\n };\n }\n this._connection.message(msg);\n });\n }\n\n /**\n * Send a {@link Message} on the bus that does not expect a reply.\n *\n * @example\n * let message = Message.newSignal('/org/test/path/,\n * 'org.test.interface',\n * 'SomeSignal');\n * bus.send(message);\n *\n * @param {Message} msg - The message to send.\n */\n send (msg) {\n if (!(msg instanceof Message)) {\n throw new Error('The send() method takes a Message class as the first argument.');\n }\n if (msg.serial === null || msg._sent) {\n msg.serial = this.newSerial();\n }\n this._connection.message(msg);\n }\n\n /**\n * Export an [`Interface`]{@link module:interface~Interface} on the bus. See\n * the documentation for that class for how to define service interfaces.\n *\n * @param path {string} - The object path to export this `Interface` on.\n * @param iface {module:interface~Interface} - The service interface to export.\n */\n export (path, iface) {\n const obj = this._getServiceObject(path);\n obj.addInterface(iface);\n }\n\n /**\n * Unexport an `Interface` on the bus. The interface will no longer be\n * advertised to clients.\n *\n * @param {string} path - The object path on which to unexport.\n * @param {module:interface~Interface} [iface] - The `Interface` to unexport.\n * If not given, this will remove all interfaces on the path.\n */\n unexport (path, iface) {\n iface = iface || null;\n if (iface === null) {\n this._removeServiceObject(path);\n } else {\n const obj = this._getServiceObject(path);\n obj.removeInterface(iface);\n if (!obj.interfaces.length) {\n this._removeServiceObject(path);\n }\n }\n }\n\n _introspect (path) {\n assertObjectPathValid(path);\n const xml = {\n node: {\n node: []\n }\n };\n\n if (this._serviceObjects[path]) {\n xml.node.interface = this._serviceObjects[path].introspect();\n }\n\n const pathSplit = path.split('/').filter(n => n);\n\n const children = new Set();\n\n for (const key of Object.keys(this._serviceObjects)) {\n const keySplit = key.split('/').filter(n => n);\n if (keySplit.length <= pathSplit.length) {\n continue;\n }\n if (pathSplit.every((v, i) => v === keySplit[i])) {\n children.add(keySplit[pathSplit.length]);\n }\n }\n\n for (const child of children) {\n xml.node.node.push({\n $: {\n name: child\n }\n });\n }\n\n return xmlHeader + this._builder.buildObject(xml);\n }\n\n _getServiceObject (path) {\n assertObjectPathValid(path);\n if (!this._serviceObjects[path]) {\n this._serviceObjects[path] = new ServiceObject(path, this);\n }\n return this._serviceObjects[path];\n }\n\n _removeServiceObject (path) {\n assertObjectPathValid(path);\n if (this._serviceObjects[path]) {\n const obj = this._serviceObjects[path];\n for (const i of Object.keys(obj.interfaces)) {\n obj.removeInterface(obj.interfaces[i]);\n }\n delete this._serviceObjects[path];\n }\n }\n\n _addMatch (match) {\n if (Object.prototype.hasOwnProperty.call(match, this._matchRules)) {\n this._matchRules[match] += 1;\n return Promise.resolve();\n }\n\n this._matchRules[match] = 1;\n\n // TODO catch error and update refcount\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'AddMatch',\n signature: 's',\n body: [match]\n });\n return this.call(msg);\n }\n\n _removeMatch (match) {\n if (!this._connection.stream.writable) {\n return Promise.resolve();\n }\n\n if (Object.prototype.hasOwnProperty.call(match, this._matchRules)) {\n this._matchRules[match] -= 1;\n if (this._matchRules[match] > 0) {\n return Promise.resolve();\n }\n } else {\n return Promise.resolve();\n }\n\n delete this._matchRules[match];\n\n // TODO catch error and update refcount\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'RemoveMatch',\n signature: 's',\n body: [match]\n });\n return this.call(msg);\n }\n}\n\nmodule.exports = MessageBus;\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = Put;\nfunction Put () {\n if (!(this instanceof Put)) return new Put;\n \n var words = [];\n var len = 0;\n \n this.put = function (buf) {\n words.push({ buffer : buf });\n len += buf.length;\n return this;\n };\n \n this.word8 = function (x) {\n words.push({ bytes : 1, value : x });\n len += 1;\n return this;\n };\n \n this.floatle = function (x) {\n words.push({ bytes : 'float', endian : 'little', value : x });\n len += 4;\n return this;\n };\n \n [ 8, 16, 24, 32, 64 ].forEach((function (bits) {\n this['word' + bits + 'be'] = function (x) {\n words.push({ endian : 'big', bytes : bits / 8, value : x });\n len += bits / 8;\n return this;\n };\n \n this['word' + bits + 'le'] = function (x) {\n words.push({ endian : 'little', bytes : bits / 8, value : x });\n len += bits / 8;\n return this;\n };\n }).bind(this));\n \n this.pad = function (bytes) {\n words.push({ endian : 'big', bytes : bytes, value : 0 });\n len += bytes;\n return this;\n };\n \n this.length = function () {\n return len;\n };\n \n this.buffer = function () {\n var buf = Buffer.alloc(len);\n var offset = 0;\n words.forEach(function (word) {\n if (word.buffer) {\n word.buffer.copy(buf, offset, 0);\n offset += word.buffer.length;\n }\n else if (word.bytes == 'float') {\n // s * f * 2^e\n var v = Math.abs(word.value);\n var s = (word.value >= 0) * 1;\n var e = Math.ceil(Math.log(v) / Math.LN2);\n var f = v / (1 << e);\n console.dir([s,e,f]);\n \n console.log(word.value);\n \n // s:1, e:7, f:23\n // [seeeeeee][efffffff][ffffffff][ffffffff]\n buf[offset++] = (s << 7) & ~~(e / 2);\n buf[offset++] = ((e & 1) << 7) & ~~(f / (1 << 16));\n buf[offset++] = 0;\n buf[offset++] = 0;\n offset += 4;\n }\n else {\n var big = word.endian === 'big';\n var ix = big ? [ (word.bytes - 1) * 8, -8 ] : [ 0, 8 ];\n \n for (\n var i = ix[0];\n big ? i >= 0 : i < word.bytes * 8;\n i += ix[1]\n ) {\n if (i >= 32) {\n buf[offset++] = Math.floor(word.value / Math.pow(2, i)) & 0xff;\n }\n else {\n buf[offset++] = (word.value >> i) & 0xff;\n }\n }\n }\n });\n return buf;\n };\n \n this.write = function (stream) {\n stream.write(this.buffer());\n };\n}\n","const Buffer = require('safe-buffer').Buffer;\n\nfunction align (ps, n) {\n const pad = n - ps._offset % n;\n if (pad === 0 || pad === n) return;\n // TODO: write8(0) in a loop (3 to 7 times here) could be more efficient\n const padBuff = Buffer.alloc(pad);\n ps.put(Buffer.from(padBuff));\n ps._offset += pad;\n}\n\nexports.align = align;\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","const libraryOptions = {\n bigIntCompat: false\n};\n\nmodule.exports.getBigIntCompat = function () {\n return libraryOptions.bigIntCompat;\n};\n\nmodule.exports.setBigIntCompat = function (val) {\n if (typeof val !== 'boolean') {\n throw new Error('dbus.setBigIntCompat() must be called with a boolean parameter');\n }\n libraryOptions.bigIntCompat = val;\n};\n","const Buffer = require('safe-buffer').Buffer;\nconst align = require('./align').align;\nconst { parseSignature } = require('../lib/signature');\nconst Long = require('long');\nconst { getBigIntCompat } = require('./library-options');\nconst JSBI = require('jsbi');\n\nconst {\n _getJSBIConstants, _getBigIntConstants\n} = require('./constants');\n\n/*\n * MakeSimpleMarshaller\n * @param signature - the signature of the data you want to check\n * @returns a simple marshaller with the \"check\" method\n *\n * check returns nothing - it only raises errors if the data is\n * invalid for the signature\n */\nconst MakeSimpleMarshaller = function (signature) {\n const marshaller = {};\n function checkValidString (data) {\n if (typeof data !== 'string') {\n throw new Error(`Data: ${data} was not of type string`);\n } else if (data.indexOf('\\0') !== -1) {\n throw new Error('String contains null byte');\n }\n }\n\n function checkValidSignature (data) {\n if (data.length > 0xff) {\n throw new Error(\n `Data: ${data} is too long for signature type (${data.length} > 255)`\n );\n }\n\n let parenCount = 0;\n for (let ii = 0; ii < data.length; ++ii) {\n if (parenCount > 32) {\n throw new Error(\n `Maximum container type nesting exceeded in signature type:${data}`\n );\n }\n switch (data[ii]) {\n case '(':\n ++parenCount;\n break;\n case ')':\n --parenCount;\n break;\n default:\n /* no-op */\n break;\n }\n }\n parseSignature(data);\n }\n\n switch (signature) {\n case 'o':\n // object path\n // TODO: verify object path here?\n case 's': // eslint-disable-line no-fallthrough\n // STRING\n marshaller.check = function (data) {\n checkValidString(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // utf8 string\n align(ps, 4);\n const buff = Buffer.from(data, 'utf8');\n ps\n .word32le(buff.length)\n .put(buff)\n .word8(0);\n ps._offset += 5 + buff.length;\n };\n break;\n case 'g':\n // SIGNATURE\n marshaller.check = function (data) {\n checkValidString(data);\n checkValidSignature(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // signature\n const buff = Buffer.from(data, 'ascii');\n ps\n .word8(data.length)\n .put(buff)\n .word8(0);\n ps._offset += 2 + buff.length;\n };\n break;\n case 'y':\n // BYTE\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0x00, 0xff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n ps.word8(data);\n ps._offset++;\n };\n break;\n case 'b':\n // BOOLEAN\n marshaller.check = function (data) {\n checkBoolean(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // booleans serialised as 0/1 unsigned 32 bit int\n data = data ? 1 : 0;\n align(ps, 4);\n ps.word32le(data);\n ps._offset += 4;\n };\n break;\n case 'n':\n // INT16\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(-0x7fff - 1, 0x7fff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 2);\n const buff = Buffer.alloc(2);\n buff.writeInt16LE(parseInt(data), 0);\n ps.put(buff);\n ps._offset += 2;\n };\n break;\n case 'q':\n // UINT16\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0, 0xffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 2);\n ps.word16le(data);\n ps._offset += 2;\n };\n break;\n case 'h':\n case 'i':\n // INT32\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(-0x7fffffff - 1, 0x7fffffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 4);\n const buff = Buffer.alloc(4);\n buff.writeInt32LE(parseInt(data), 0);\n ps.put(buff);\n ps._offset += 4;\n };\n break;\n case 'u':\n // UINT32\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0, 0xffffffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // 32 t unsigned int\n align(ps, 4);\n ps.word32le(data);\n ps._offset += 4;\n };\n break;\n case 't':\n // UINT64\n marshaller.check = function (data) {\n return checkLong(data, false);\n };\n marshaller.marshall = function (ps, data) {\n data = this.check(data);\n align(ps, 8);\n ps.word32le(data.low);\n ps.word32le(data.high);\n ps._offset += 8;\n };\n break;\n case 'x':\n // INT64\n marshaller.check = function (data) {\n return checkLong(data, true);\n };\n marshaller.marshall = function (ps, data) {\n data = this.check(data);\n align(ps, 8);\n ps.word32le(data.low);\n ps.word32le(data.high);\n ps._offset += 8;\n };\n break;\n case 'd':\n // DOUBLE\n marshaller.check = function (data) {\n if (typeof data !== 'number') {\n throw new Error(`Data: ${data} was not of type number`);\n } else if (Number.isNaN(data)) {\n throw new Error(`Data: ${data} was not a number`);\n } else if (!Number.isFinite(data)) {\n throw new Error('Number outside range');\n }\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 8);\n const buff = Buffer.alloc(8);\n buff.writeDoubleLE(parseFloat(data), 0);\n ps.put(buff);\n ps._offset += 8;\n };\n break;\n default:\n throw new Error(`Unknown data type format: ${signature}`);\n }\n return marshaller;\n};\nexports.MakeSimpleMarshaller = MakeSimpleMarshaller;\n\nconst checkRange = function (minValue, maxValue, data) {\n if (data > maxValue || data < minValue) {\n throw new Error('Number outside range');\n }\n};\n\nconst checkInteger = function (data) {\n if (typeof data !== 'number') {\n throw new Error(`Data: ${data} was not of type number`);\n }\n if (Math.floor(data) !== data) {\n throw new Error(`Data: ${data} was not an integer`);\n }\n};\n\nconst checkBoolean = function (data) {\n if (!(typeof data === 'boolean' || data === 0 || data === 1)) { throw new Error(`Data: ${data} was not of type boolean`); }\n};\n\nconst checkJSBILong = function (data, signed) {\n const { MAX_INT64, MIN_INT64, MAX_UINT64, MIN_UINT64 } = _getJSBIConstants();\n\n data = JSBI.BigInt(data.toString());\n\n if (signed) {\n if (JSBI.greaterThan(data, MAX_INT64)) {\n throw new Error('data was out of range (greater than max int64)');\n } else if (JSBI.lessThan(data, MIN_INT64)) {\n throw new Error('data was out of range (less than min int64)');\n }\n } else {\n if (JSBI.greaterThan(data, MAX_UINT64)) {\n throw new Error('data was out of range (greater than max uint64)');\n } else if (JSBI.lessThan(data, MIN_UINT64)) {\n throw new Error('data was out of range (less than min uint64)');\n }\n }\n\n return Long.fromString(data.toString(), true);\n};\n\nconst checkBigIntLong = function (data, signed) {\n const { MAX_INT64, MIN_INT64, MAX_UINT64, MIN_UINT64 } = _getBigIntConstants();\n\n if (typeof data !== 'bigint') {\n data = BigInt(data.toString());\n }\n\n if (signed) {\n if (data > MAX_INT64) {\n throw new Error('data was out of range (greater than max int64)');\n } else if (data < MIN_INT64) {\n throw new Error('data was out of range (less than min int64)');\n }\n } else {\n if (data > MAX_UINT64) {\n throw new Error('data was out of range (greater than max uint64)');\n } else if (data < MIN_UINT64) {\n throw new Error('data was out of range (less than min uint64)');\n }\n }\n\n return Long.fromString(data.toString(), true);\n};\n\nconst checkLong = function (data, signed) {\n const compat = getBigIntCompat();\n\n if (compat) {\n return checkJSBILong(data, signed);\n } else {\n return checkBigIntLong(data, signed);\n }\n};\n","const assert = require('assert');\n\nconst { parseSignature } = require('./signature');\nconst put = require('@nornagon/put');\nconst Marshallers = require('./marshallers');\nconst align = require('./align').align;\n\nmodule.exports = function marshall (signature, data, offset, fds) {\n if (typeof offset === 'undefined') offset = 0;\n const tree = parseSignature(signature);\n if (!Array.isArray(data) || data.length !== tree.length) {\n throw new Error(\n `message body does not match message signature. Body:${JSON.stringify(\n data\n )}, signature:${signature}`\n );\n }\n const putstream = put();\n putstream._offset = offset;\n const buf = writeStruct(putstream, tree, data, fds).buffer();\n return buf;\n};\n\n// TODO: serialise JS objects as a{sv}\n// function writeHash(ps, treeKey, treeVal, data) {\n//\n// }\n\nfunction writeStruct (ps, tree, data, fds) {\n if (tree.length !== data.length) {\n throw new Error('Invalid struct data');\n }\n for (let i = 0; i < tree.length; ++i) {\n write(ps, tree[i], data[i], fds);\n }\n return ps;\n}\n\nfunction write (ps, ele, data, fds) {\n switch (ele.type) {\n case '(':\n case '{':\n align(ps, 8);\n writeStruct(ps, ele.child, data, fds);\n break;\n case 'a': {\n // array serialisation:\n // length of array body aligned at 4 byte boundary\n // (optional 4 bytes to align first body element on 8-byte boundary if element\n // body\n const arrPut = put();\n arrPut._offset = ps._offset;\n const _offset = arrPut._offset;\n writeSimple(arrPut, 'u', 0); // array length placeholder\n const lengthOffset = arrPut._offset - 4 - _offset;\n // we need to align here because alignment is not included in array length\n if (['x', 't', 'd', '{', '('].indexOf(ele.child[0].type) !== -1) { align(arrPut, 8); }\n const startOffset = arrPut._offset;\n for (let i = 0; i < data.length; ++i) { write(arrPut, ele.child[0], data[i], fds); }\n const arrBuff = arrPut.buffer();\n const length = arrPut._offset - startOffset;\n // lengthOffset in the range 0 to 3 depending on number of align bytes padded _before_ arrayLength\n arrBuff.writeUInt32LE(length, lengthOffset);\n ps.put(arrBuff);\n ps._offset += arrBuff.length;\n break;\n } case 'v': {\n // TODO: allow serialisation of simple types as variants, e. g 123 -> ['u', 123], true -> ['b', 1], 'abc' -> ['s', 'abc']\n assert.strictEqual(data.length, 2, 'variant data should be [signature, data]');\n const signatureEle = {\n type: 'g',\n child: []\n };\n write(ps, signatureEle, data[0], fds);\n const tree = parseSignature(data[0]);\n assert(tree.length === 1);\n write(ps, tree[0], data[1], fds);\n break;\n } case 'h': {\n if (fds) {\n const idx = fds.push(data);\n return writeSimple(ps, ele.type, idx - 1);\n }\n }\n default:\n return writeSimple(ps, ele.type, data);\n }\n}\n\nconst stringTypes = ['g', 'o', 's'];\n\nfunction writeSimple (ps, type, data) {\n if (typeof data === 'undefined') {\n throw new Error(\n \"Serialisation of JS 'undefined' type is not supported by d-bus\"\n );\n }\n if (data === null) { throw new Error('Serialisation of null value is not supported by d-bus'); }\n\n if (Buffer.isBuffer(data)) data = data.toString(); // encoding?\n if (stringTypes.indexOf(type) !== -1 && typeof data !== 'string') {\n throw new Error(\n `Expected string or buffer argument, got ${JSON.stringify(\n data\n )} of type '${type}'`\n );\n }\n\n const simpleMarshaller = Marshallers.MakeSimpleMarshaller(type);\n simpleMarshaller.marshall(ps, data);\n return ps;\n}\n","/* global BigInt */\n\nconst { parseSignature } = require('./signature');\nconst { getBigIntCompat } = require('./library-options');\nconst JSBI = require('jsbi');\nconst Long = require('long');\nconst LE = require('./constants').endianness.le;\n\n// Buffer + position + global start position ( used in alignment )\nfunction DBusBuffer (buffer, startPos, endian, fds, options) {\n if (typeof options !== 'object') {\n options = { ayBuffer: true };\n } else if (options.ayBuffer === undefined) {\n // default settings object\n options.ayBuffer = true; // enforce truthy default props\n }\n this.options = options;\n this.buffer = buffer;\n this.endian = endian;\n this.fds = fds;\n this.startPos = startPos || 0;\n this.pos = 0;\n}\n\nDBusBuffer.prototype.align = function (power) {\n const allbits = (1 << power) - 1;\n const paddedOffset = ((this.pos + this.startPos + allbits) >> power) << power;\n this.pos = paddedOffset - this.startPos;\n};\n\nDBusBuffer.prototype.readInt8 = function () {\n this.pos++;\n return this.buffer[this.pos - 1];\n};\n\nDBusBuffer.prototype.readSInt16 = function () {\n this.align(1);\n\n const res = (this.endian === LE\n ? this.buffer.readInt16LE(this.pos)\n : this.buffer.readInt16BE(this.pos));\n\n this.pos += 2;\n return res;\n};\n\nDBusBuffer.prototype.readInt16 = function () {\n this.align(1);\n\n const res = (this.endian === LE\n ? this.buffer.readUInt16LE(this.pos)\n : this.buffer.readUInt16BE(this.pos));\n\n this.pos += 2;\n return res;\n};\n\nDBusBuffer.prototype.readSInt32 = function () {\n this.align(2);\n\n const res = (this.endian === LE\n ? this.buffer.readInt32LE(this.pos)\n : this.buffer.readInt32BE(this.pos));\n\n this.pos += 4;\n return res;\n};\n\nDBusBuffer.prototype.readInt32 = function () {\n this.align(2);\n\n const res = (this.endian === LE\n ? this.buffer.readUInt32LE(this.pos)\n : this.buffer.readUInt32BE(this.pos));\n\n this.pos += 4;\n return res;\n};\n\nDBusBuffer.prototype.readDouble = function () {\n this.align(3);\n\n const res = (this.endian === LE\n ? this.buffer.readDoubleLE(this.pos)\n : this.buffer.readDoubleBE(this.pos));\n\n this.pos += 8;\n return res;\n};\n\nDBusBuffer.prototype.readString = function (len) {\n if (len === 0) {\n this.pos++;\n return '';\n }\n const res = this.buffer.toString('utf8', this.pos, this.pos + len);\n this.pos += len + 1; // dbus strings are always zero-terminated ('s' and 'g' types)\n return res;\n};\n\nDBusBuffer.prototype.readTree = function readTree (tree) {\n switch (tree.type) {\n case '(':\n case '{':\n case 'r':\n this.align(3);\n return this.readStruct(tree.child);\n case 'a':\n if (!tree.child || tree.child.length !== 1) {\n throw new Error('Incorrect array element signature');\n }\n return this.readArray(tree.child[0], this.readInt32());\n case 'v':\n return this.readVariant();\n default:\n return this.readSimpleType(tree.type);\n }\n};\n\nDBusBuffer.prototype.read = function read (signature) {\n const tree = parseSignature(signature);\n return this.readStruct(tree);\n};\n\nDBusBuffer.prototype.readVariant = function readVariant () {\n const signature = this.readSimpleType('g');\n const tree = parseSignature(signature);\n return [tree, this.readStruct(tree)];\n};\n\nDBusBuffer.prototype.readStruct = function readStruct (struct) {\n const result = [];\n for (let i = 0; i < struct.length; ++i) {\n result.push(this.readTree(struct[i]));\n }\n return result;\n};\n\nDBusBuffer.prototype.readArray = function readArray (eleType, arrayBlobSize) {\n const result = [];\n const start = this.pos;\n\n // special case: treat ay as Buffer\n if (eleType.type === 'y' && this.options.ayBuffer) {\n this.pos += arrayBlobSize;\n return this.buffer.slice(start, this.pos);\n }\n\n // end of array is start of first element + array size\n // we need to add 4 bytes if not on 8-byte boundary\n // and array element needs 8 byte alignment\n if (['x', 't', 'd', '{', '(', 'r'].indexOf(eleType.type) !== -1) {\n this.align(3);\n }\n const end = this.pos + arrayBlobSize;\n while (this.pos < end) {\n result.push(this.readTree(eleType));\n }\n return result;\n};\n\nDBusBuffer.prototype.readSimpleType = function readSimpleType (t) {\n let len, word0, word1;\n switch (t) {\n case 'y':\n return this.readInt8();\n case 'b':\n // TODO: spec says that true is strictly 1 and false is strictly 0\n // shold we error (or warn?) when non 01 values?\n return !!this.readInt32();\n case 'n':\n return this.readSInt16();\n case 'q':\n return this.readInt16();\n case 'h': {\n const idx = this.readInt32();\n if (!this.fds || this.fds.length <= idx) throw new Error('No FDs available');\n return this.fds[idx];\n } case 'u':\n return this.readInt32();\n case 'i':\n return this.readSInt32();\n case 'g':\n len = this.readInt8();\n return this.readString(len);\n case 's':\n case 'o':\n len = this.readInt32();\n return this.readString(len);\n // TODO: validate object path here\n // if (t === 'o' && !isValidObjectPath(str))\n // throw new Error('string is not a valid object path'));\n case 'x': {\n // signed\n this.align(3);\n word0 = this.readInt32();\n word1 = this.readInt32();\n const signedLong = new Long(word0, word1, false);\n\n if (getBigIntCompat()) {\n return JSBI.BigInt(signedLong.toString());\n } else if (typeof BigInt !== 'function') {\n throw new Error('BigInt is not supported in this Node version. Use dbus.setBigIntCompat(true) to use a polyfill');\n } else {\n return BigInt(signedLong.toString());\n }\n }\n case 't': {\n // unsigned\n this.align(3);\n word0 = this.readInt32();\n word1 = this.readInt32();\n const unsignedLong = new Long(word0, word1, true);\n\n if (getBigIntCompat()) {\n return JSBI.BigInt(unsignedLong.toString());\n } else if (typeof BigInt !== 'function') {\n throw new Error('BigInt is not supported in this Node version. Use dbus.setBigIntCompat(true) to use a polyfill');\n } else {\n return BigInt(unsignedLong.toString());\n }\n }\n case 'd':\n return this.readDouble();\n default:\n throw new Error(`Unsupported type: ${t}`);\n }\n};\n\nmodule.exports = DBusBuffer;\n","[\n {\n \"type\": \"a\",\n \"child\": [\n {\n \"type\": \"(\",\n \"child\": [\n {\n \"type\": \"y\",\n \"child\": []\n },\n {\n \"type\": \"v\",\n \"child\": []\n }\n ]\n }\n ]\n }\n]\n","const Buffer = require('safe-buffer').Buffer;\nconst marshall = require('./marshall');\nconst constants = require('./constants');\nconst DBusBuffer = require('./dbus-buffer');\n\nconst headerSignature = require('./header-signature.json');\n\nmodule.exports.unmarshalMessages = function messageParser (\n stream,\n onMessage,\n opts\n) {\n let state = 0; // 0: header, 1: fields + body\n let header, fieldsAndBody;\n let fieldsLength, fieldsLengthPadded;\n let fieldsAndBodyLength = 0;\n let bodyLength = 0;\n let endian = 0;\n const LE = constants.endianness.le;\n stream.on('readable', function () {\n while (1) {\n if (state === 0) {\n header = stream.read(16);\n if (!header) {\n break;\n }\n state = 1;\n\n endian = header.readUInt8(0);\n\n fieldsLength = (endian === LE ? header.readUInt32LE(12) : header.readUInt32BE(12));\n fieldsLengthPadded = ((fieldsLength + 7) >> 3) << 3;\n bodyLength = (endian === LE ? header.readUInt32LE(4) : header.readUInt32BE(4));\n fieldsAndBodyLength = fieldsLengthPadded + bodyLength;\n } else {\n const readBuf = stream.read(fieldsAndBodyLength, null);\n // usockets return object with { data, fds }\n fieldsAndBody = readBuf ? readBuf.data || readBuf : readBuf;\n if (!fieldsAndBody) {\n break;\n }\n state = 0;\n\n const messageBuffer = new DBusBuffer(fieldsAndBody, 0, endian, readBuf.fds, opts);\n const unmarshalledHeader = messageBuffer.readArray(\n headerSignature[0].child[0],\n fieldsLength\n );\n messageBuffer.align(3);\n let headerName;\n const message = {};\n message.serial = (endian === LE ? header.readUInt32LE(8) : header.readUInt32BE(8));\n\n for (let i = 0; i < unmarshalledHeader.length; ++i) {\n headerName = constants.headerTypeName[unmarshalledHeader[i][0]];\n message[headerName] = unmarshalledHeader[i][1][1][0];\n }\n\n message.type = header[1];\n message.flags = header[2];\n\n if (bodyLength > 0 && message.signature) {\n message.body = messageBuffer.read(message.signature);\n }\n onMessage(message);\n }\n }\n });\n};\n\n// given buffer which contains entire message deserialise it\n// TODO: factor out common code\nmodule.exports.unmarshall = function unmarshall (buff, opts) {\n const endian = buff.readUInt8();\n const msgBuf = new DBusBuffer(buff, 0, endian, null, opts);\n const headers = msgBuf.read('yyyyuua(yv)');\n const message = {};\n for (let i = 0; i < headers[6].length; ++i) {\n const headerName = constants.headerTypeName[headers[6][i][0]];\n message[headerName] = headers[6][i][1][1][0];\n }\n message.type = headers[1];\n message.flags = headers[2];\n message.serial = headers[5];\n msgBuf.align(3);\n message.body = msgBuf.read(message.signature);\n return message;\n};\n\nmodule.exports.marshall = function marshallMessage (message) {\n if (!message.serial) throw new Error('Missing or invalid serial');\n const flags = message.flags || 0;\n const type = message.type || constants.messageType.METHOD_CALL;\n let bodyLength = 0;\n let bodyBuff;\n const fds = [];\n if (message.signature && message.body) {\n bodyBuff = marshall(message.signature, message.body, 0, fds);\n bodyLength = bodyBuff.length;\n message.unixFd = fds.length;\n }\n const header = [\n constants.endianness.le,\n type,\n flags,\n constants.protocolVersion,\n bodyLength,\n message.serial\n ];\n const headerBuff = marshall('yyyyuu', header);\n const fields = [];\n constants.headerTypeName.forEach(function (fieldName) {\n const fieldVal = message[fieldName];\n if (fieldVal) {\n fields.push([\n constants.headerTypeId[fieldName],\n [constants.fieldSignature[fieldName], fieldVal]\n ]);\n }\n });\n const fieldsBuff = marshall('a(yv)', [fields], 12);\n const headerLenAligned =\n ((headerBuff.length + fieldsBuff.length + 7) >> 3) << 3;\n const messageLen = headerLenAligned + bodyLength;\n const messageBuff = Buffer.alloc(messageLen);\n headerBuff.copy(messageBuff);\n fieldsBuff.copy(messageBuff, headerBuff.length);\n if (bodyLength > 0) bodyBuff.copy(messageBuff, headerLenAligned);\n\n return [messageBuff, fds];\n};\n","const Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function readOneLine (stream, cb) {\n const bytes = [];\n function readable () {\n while (1) {\n const buf = stream.read(1);\n if (!buf) return;\n const b = buf[0];\n if (b === 0x0a) {\n try {\n cb(Buffer.from(bytes));\n } catch (error) {\n stream.emit('error', error);\n }\n stream.removeListener('readable', readable);\n return;\n }\n bytes.push(b);\n }\n }\n stream.on('readable', readable);\n};\n","const Buffer = require('safe-buffer').Buffer;\nconst crypto = require('crypto');\nconst fs = require('fs');\nconst path = require('path');\n\nconst constants = require('./constants');\nconst readLine = require('./readline');\n\nfunction sha1 (input) {\n const shasum = crypto.createHash('sha1');\n shasum.update(input);\n return shasum.digest('hex');\n}\n\nfunction getUserHome () {\n return process.env[process.platform.match(/$win/) ? 'USERPROFILE' : 'HOME'];\n}\n\nfunction getCookie (context, id, cb) {\n // http://dbus.freedesktop.org/doc/dbus-specification.html#auth-mechanisms-sha\n const dirname = path.join(getUserHome(), '.dbus-keyrings');\n // > There is a default context, \"org_freedesktop_general\" that's used by servers that do not specify otherwise.\n if (context.length === 0) context = 'org_freedesktop_general';\n\n const filename = path.join(dirname, context);\n // check it's not writable by others and readable by user\n fs.stat(dirname, function (err, stat) {\n if (err) return cb(err);\n if (stat.mode & 0o22) {\n return cb(\n new Error(\n 'User keyrings directory is writeable by other users. Aborting authentication'\n )\n );\n }\n if ('getuid' in process && stat.uid !== process.getuid()) {\n return cb(\n new Error(\n 'Keyrings directory is not owned by the current user. Aborting authentication!'\n )\n );\n }\n fs.readFile(filename, 'ascii', function (err, keyrings) {\n if (err) return cb(err);\n const lines = keyrings.split('\\n');\n for (let l = 0; l < lines.length; ++l) {\n const data = lines[l].split(' ');\n if (id === data[0]) return cb(null, data[2]);\n }\n return cb(new Error('cookie not found'));\n });\n });\n}\n\nfunction hexlify (input) {\n return Buffer.from(input.toString(), 'ascii').toString('hex');\n}\n\nmodule.exports = function auth (stream, opts, cb) {\n // filter used to make a copy so we don't accidently change opts data\n let authMethods;\n if (opts.authMethods) {\n authMethods = opts.authMethods;\n } else {\n authMethods = constants.defaultAuthMethods;\n }\n stream.write('\\0');\n tryAuth(stream, authMethods.slice(), cb);\n};\n\nfunction tryAuth (stream, methods, cb) {\n if (methods.length === 0) {\n return cb(new Error('No authentication methods left to try'));\n }\n\n const authMethod = methods.shift();\n const uid = 'getuid' in process ? process.getuid() : 0;\n const id = hexlify(uid);\n\n let guid = '';\n function beginOrNextAuth () {\n readLine(stream, function (line) {\n const ok = line.toString('ascii').match(/^([A-Za-z]+) (.*)/);\n if (ok && ok[1] === 'OK') {\n guid = ok[2]; // ok[2] = guid. Do we need it?\n if (stream.supportsUnixFd) {\n negotiateUnixFd();\n } else {\n stream.write('BEGIN\\r\\n');\n return cb(null, guid);\n }\n } else {\n // TODO: parse error!\n if (!methods.empty) {\n tryAuth(stream, methods, cb);\n } else {\n return cb(line);\n }\n }\n });\n }\n function negotiateUnixFd () {\n stream.write('NEGOTIATE_UNIX_FD\\r\\n');\n readLine(stream, function (line) {\n const res = line.toString('ascii').trim();\n if (res === 'AGREE_UNIX_FD') {\n // ok\n } else if (res === 'ERROR') {\n stream.supportsUnixFd = false;\n } else {\n return cb(line);\n }\n stream.write('BEGIN\\r\\n');\n return cb(null, guid);\n });\n }\n\n switch (authMethod) {\n case 'EXTERNAL':\n stream.write(`AUTH ${authMethod} ${id}\\r\\n`);\n beginOrNextAuth();\n break;\n case 'DBUS_COOKIE_SHA1':\n stream.write(`AUTH ${authMethod} ${id}\\r\\n`);\n readLine(stream, function (line) {\n const data = Buffer.from(\n line\n .toString()\n .split(' ')[1]\n .trim(),\n 'hex'\n )\n .toString()\n .split(' ');\n const cookieContext = data[0];\n const cookieId = data[1];\n const serverChallenge = data[2];\n // any random 16 bytes should work, sha1(rnd) to make it simplier\n const clientChallenge = crypto.randomBytes(16).toString('hex');\n getCookie(cookieContext, cookieId, function (err, cookie) {\n if (err) return cb(err);\n const response = sha1(\n [serverChallenge, clientChallenge, cookie].join(':')\n );\n const reply = hexlify(clientChallenge + response);\n stream.write(`DATA ${reply}\\r\\n`);\n beginOrNextAuth();\n });\n });\n break;\n case 'ANONYMOUS':\n stream.write('AUTH ANONYMOUS \\r\\n');\n beginOrNextAuth();\n break;\n default:\n console.error(`Unsupported auth method: ${authMethod}`);\n beginOrNextAuth();\n break;\n }\n}\n","const fs = require('fs');\nconst os = require('os');\n\nfunction getDbusAddressFromWindowSelection (callback) {\n // read dbus adress from window selection\n // TODO: implement this somewhere\n const x11 = require('x11');\n if (x11 === null) {\n throw new Error('cannot get session bus address from window selection: dbus-next was installed without x11 support');\n }\n\n // read machine uuid\n fs.readFile('/var/lib/dbus/machine-id', 'ascii', function (err, uuid) {\n if (err) return callback(err);\n const hostname = os.hostname().split('-')[0];\n x11.createClient(function (err, display) {\n if (err) return callback(err);\n const X = display.client;\n const selectionName = `_DBUS_SESSION_BUS_SELECTION_${\n hostname\n }_${uuid.trim()}`;\n X.InternAtom(false, selectionName, function (err, id) {\n if (err) return callback(err);\n X.GetSelectionOwner(id, function (err, win) {\n if (err) return callback(err);\n X.InternAtom(false, '_DBUS_SESSION_BUS_ADDRESS', function (\n err,\n propId\n ) {\n if (err) return callback(err);\n win = display.screen[0].root;\n X.GetProperty(0, win, propId, 0, 0, 10000000, function (err, val) {\n if (err) return callback(err);\n callback(null, val.data.toString());\n });\n });\n });\n });\n });\n });\n}\n\nfunction getDbusAddressFromFs () {\n const home = process.env.HOME;\n const display = process.env.DISPLAY;\n if (!display) {\n throw new Error('could not get DISPLAY environment variable to get dbus address');\n }\n\n const reg = /.*:([0-9]+)\\.?.*/;\n const match = display.match(reg);\n\n if (!match || !match[1]) {\n throw new Error('could not parse DISPLAY environment variable to get dbus address');\n }\n\n const displayNum = match[1];\n\n const machineId = fs.readFileSync('/var/lib/dbus/machine-id').toString().trim();\n const dbusInfo = fs.readFileSync(`${home}/.dbus/session-bus/${machineId}-${displayNum}`).toString().trim();\n for (let line of dbusInfo.split('\\n')) {\n line = line.trim();\n if (line.startsWith('DBUS_SESSION_BUS_ADDRESS=')) {\n let address = line.split('DBUS_SESSION_BUS_ADDRESS=')[1];\n if (!address) {\n throw new Error('DBUS_SESSION_BUS_ADDRESS variable is set incorrectly in dbus info file');\n }\n\n const removeQuotes = /^['\"]?(.*?)['\"]?$/;\n address = address.match(removeQuotes)[1];\n return address;\n }\n }\n\n throw new Error('DBUS_SESSION_BUS_ADDRESS was not set in dbus info file');\n}\n\nmodule.exports = {\n getDbusAddressFromFs: getDbusAddressFromFs,\n getDbusAddressFromWindowSelection: getDbusAddressFromWindowSelection\n};\n","const { parseSignature, collapseSignature } = require('./signature');\nconst { Variant } = require('./variant');\nconst message = require('./message');\n\nfunction valueIsMarshallVariant (value) {\n // used for the marshaller variant type\n return Array.isArray(value) && value.length === 2 && Array.isArray(value[0]) && value[0].length > 0 && value[0][0].type;\n}\n\nfunction marshallVariantToJs (variant) {\n // XXX The marshaller uses a different body format than what the connection\n // is expected to emit. These two formats should be unified.\n // parses a single complete variant in marshall format\n const type = variant[0][0];\n const value = variant[1][0];\n\n if (!type.child.length) {\n if (valueIsMarshallVariant(value)) {\n return new Variant(collapseSignature(value[0][0]), marshallVariantToJs(value));\n } else {\n return value;\n }\n }\n\n if (type.type === 'a') {\n if (type.child[0].type === 'y') {\n // this gives us a buffer\n return value;\n } else if (type.child[0].type === '{') {\n // this is an array of dictionary entries\n const result = {};\n for (let i = 0; i < value.length; ++i) {\n // dictionary keys must have basic types\n result[value[i][0]] = marshallVariantToJs([[type.child[0].child[1]], [value[i][1]]]);\n }\n return result;\n } else {\n // other arrays only have one type\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n result[i] = marshallVariantToJs([[type.child[0]], [value[i]]]);\n }\n return result;\n }\n } else if (type.type === '(') {\n // structs have types equal to the number of children\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n result[i] = marshallVariantToJs([[type.child[i]], [value[i]]]);\n }\n return result;\n }\n}\n\nfunction messageToJsFmt (message) {\n // XXX The marshaller uses a different body format than what the connection\n // is expected to emit. These two formats should be unified.\n const { signature = '', body = [] } = message;\n const bodyJs = [];\n const signatureTree = parseSignature(signature);\n for (let i = 0; i < signatureTree.length; ++i) {\n const tree = signatureTree[i];\n bodyJs.push(marshallVariantToJs([[tree], [body[i]]]));\n }\n\n message.body = bodyJs;\n message.signature = signature;\n return message;\n}\n\nfunction jsToMarshalFmt (signature, value) {\n // XXX The connection accepts a message body in plain js format and converts\n // it to the marshaller format for writing. These two formats should be\n // unified.\n if (value === undefined) {\n throw new Error(`expected value for signature: ${signature}`);\n }\n if (signature === undefined) {\n throw new Error(`expected signature for value: ${value}`);\n }\n\n let signatureStr = null;\n if (typeof signature === 'string') {\n signatureStr = signature;\n signature = parseSignature(signature)[0];\n } else {\n signatureStr = collapseSignature(signature);\n }\n\n if (signature.child.length === 0) {\n if (signature.type === 'v') {\n if (value.constructor !== Variant) {\n throw new Error(`expected a Variant for value (got ${typeof value})`);\n }\n return [signature.type, jsToMarshalFmt(value.signature, value.value)];\n } else {\n return [signature.type, value];\n }\n }\n\n if (signature.type === 'a' && signature.child[0].type === 'y' && value.constructor === Buffer) {\n // special case: ay is a buffer\n return [signatureStr, value];\n } else if (signature.type === 'a') {\n let result = [];\n if (signature.child[0].type === 'y') {\n result = value;\n } else if (signature.child[0].type === '{') {\n // this is an array of dictionary elements\n if (value.constructor !== Object) {\n throw new Error(`expecting an object for signature '${signatureStr}' (got ${typeof value})`);\n }\n for (const k of Object.keys(value)) {\n const v = value[k];\n if (v.constructor === Variant) {\n result.push([k, jsToMarshalFmt(v.signature, v.value)]);\n } else {\n result.push([k, jsToMarshalFmt(signature.child[0].child[1], v)[1]]);\n }\n }\n } else {\n if (!Array.isArray(value)) {\n throw new Error(`expecting an array for signature '${signatureStr}' (got ${typeof value})`);\n }\n for (const v of value) {\n if (v.constructor === Variant) {\n result.push(jsToMarshalFmt(v.signature, v.value));\n } else {\n result.push(jsToMarshalFmt(signature.child[0], v)[1]);\n }\n }\n }\n return [signatureStr, result];\n } else if (signature.type === '(') {\n if (!Array.isArray(value)) {\n throw new Error(`expecting an array for signature '${signatureStr}' (got ${typeof value})`);\n }\n if (value.length !== signature.child.length) {\n throw new Error(`expecting struct to have ${signature.child.length} members (got ${value.length} members)`);\n }\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n const v = value[i];\n if (signature.child[i] === 'v') {\n if (v.constructor !== Variant) {\n throw new Error(`expected a Variant for struct member ${i + 1} (got ${v})`);\n }\n result.push(jsToMarshalFmt(v.signature, v.value));\n } else {\n result.push(jsToMarshalFmt(signature.child[i], v)[1]);\n }\n }\n return [signatureStr, result];\n } else {\n throw new Error(`got unknown complex type: ${signature.type}`);\n }\n}\n\nfunction marshallMessage (msg) {\n // XXX The connection accepts a message body in plain js format and converts\n // it to the marshaller format for writing. These two formats should be\n // unified.\n const { signature = '', body = [] } = msg;\n\n const signatureTree = parseSignature(signature);\n\n if (signatureTree.length !== body.length) {\n throw new Error(`Expected ${signatureTree.length} body elements for signature '${signature}' (got ${body.length})`);\n }\n\n const marshallerBody = [];\n for (let i = 0; i < body.length; ++i) {\n if (signatureTree[i].type === 'v') {\n if (body[i].constructor !== Variant) {\n throw new Error(`Expected a Variant() argument for position ${i + 1} (value='${body[i]}')`);\n }\n marshallerBody.push(jsToMarshalFmt(body[i].signature, body[i].value));\n } else {\n marshallerBody.push(jsToMarshalFmt(signatureTree[i], body[i])[1]);\n }\n }\n\n msg.signature = signature;\n msg.body = marshallerBody;\n return message.marshall(msg);\n}\n\nmodule.exports = {\n messageToJsFmt: messageToJsFmt,\n marshallMessage: marshallMessage\n};\n","var Stream = require('stream')\n\n// through\n//\n// a stream that does nothing but re-emit the input.\n// useful for aggregating a series of changing but not ending streams into one stream)\n\nexports = module.exports = through\nthrough.through = through\n\n//create a readable writable stream.\n\nfunction through (write, end, opts) {\n write = write || function (data) { this.queue(data) }\n end = end || function () { this.queue(null) }\n\n var ended = false, destroyed = false, buffer = [], _ended = false\n var stream = new Stream()\n stream.readable = stream.writable = true\n stream.paused = false\n\n// stream.autoPause = !(opts && opts.autoPause === false)\n stream.autoDestroy = !(opts && opts.autoDestroy === false)\n\n stream.write = function (data) {\n write.call(this, data)\n return !stream.paused\n }\n\n function drain() {\n while(buffer.length && !stream.paused) {\n var data = buffer.shift()\n if(null === data)\n return stream.emit('end')\n else\n stream.emit('data', data)\n }\n }\n\n stream.queue = stream.push = function (data) {\n// console.error(ended)\n if(_ended) return stream\n if(data === null) _ended = true\n buffer.push(data)\n drain()\n return stream\n }\n\n //this will be registered as the first 'end' listener\n //must call destroy next tick, to make sure we're after any\n //stream piped from here.\n //this is only a problem if end is not emitted synchronously.\n //a nicer way to do this is to make sure this is the last listener for 'end'\n\n stream.on('end', function () {\n stream.readable = false\n if(!stream.writable && stream.autoDestroy)\n process.nextTick(function () {\n stream.destroy()\n })\n })\n\n function _end () {\n stream.writable = false\n end.call(stream)\n if(!stream.readable && stream.autoDestroy)\n stream.destroy()\n }\n\n stream.end = function (data) {\n if(ended) return\n ended = true\n if(arguments.length) stream.write(data)\n _end() // will emit or queue\n return stream\n }\n\n stream.destroy = function () {\n if(destroyed) return\n destroyed = true\n ended = true\n buffer.length = 0\n stream.writable = stream.readable = false\n stream.emit('close')\n return stream\n }\n\n stream.pause = function () {\n if(stream.paused) return\n stream.paused = true\n return stream\n }\n\n stream.resume = function () {\n if(stream.paused) {\n stream.paused = false\n stream.emit('resume')\n }\n drain()\n //may have become paused again,\n //as drain emits 'data'.\n if(!stream.paused)\n stream.emit('drain')\n return stream\n }\n return stream\n}\n\n","\n'use strict';\n\nvar Stream = require('stream')\n\n// from\n//\n// a stream that reads from an source.\n// source may be an array, or a function.\n// from handles pause behaviour for you.\n\nmodule.exports =\nfunction from (source) {\n if(Array.isArray(source)) {\n\t\tvar source_index = 0, source_len = source.length;\n return from (function (i) {\n if(source_index < source_len)\n this.emit('data', source[source_index++])\n else\n this.emit('end')\n return true\n })\n }\n var s = new Stream(), i = 0\n s.ended = false\n s.started = false\n s.readable = true\n s.writable = false\n s.paused = false\n s.ended = false\n s.pause = function () {\n s.started = true\n s.paused = true\n }\n function next () {\n s.started = true\n if(s.ended) return\n while(!s.ended && !s.paused && source.call(s, i++, function () {\n if(!s.ended && !s.paused)\n process.nextTick(next);\n }))\n ;\n }\n s.resume = function () {\n s.started = true\n s.paused = false\n next()\n }\n s.on('end', function () {\n s.ended = true\n s.readable = false\n process.nextTick(s.destroy)\n })\n s.destroy = function () {\n s.ended = true\n s.emit('close') \n }\n /*\n by default, the stream will start emitting at nextTick\n if you want, you can pause it, after pipeing.\n you can also resume before next tick, and that will also\n work.\n */\n process.nextTick(function () {\n if(!s.started) s.resume()\n })\n return s\n}\n","var Stream = require(\"stream\")\nvar writeMethods = [\"write\", \"end\", \"destroy\"]\nvar readMethods = [\"resume\", \"pause\"]\nvar readEvents = [\"data\", \"close\"]\nvar slice = Array.prototype.slice\n\nmodule.exports = duplex\n\nfunction forEach (arr, fn) {\n if (arr.forEach) {\n return arr.forEach(fn)\n }\n\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i], i)\n }\n}\n\nfunction duplex(writer, reader) {\n var stream = new Stream()\n var ended = false\n\n forEach(writeMethods, proxyWriter)\n\n forEach(readMethods, proxyReader)\n\n forEach(readEvents, proxyStream)\n\n reader.on(\"end\", handleEnd)\n\n writer.on(\"drain\", function() {\n stream.emit(\"drain\")\n })\n\n writer.on(\"error\", reemit)\n reader.on(\"error\", reemit)\n\n stream.writable = writer.writable\n stream.readable = reader.readable\n\n return stream\n\n function proxyWriter(methodName) {\n stream[methodName] = method\n\n function method() {\n return writer[methodName].apply(writer, arguments)\n }\n }\n\n function proxyReader(methodName) {\n stream[methodName] = method\n\n function method() {\n stream.emit(methodName)\n var func = reader[methodName]\n if (func) {\n return func.apply(reader, arguments)\n }\n reader.emit(methodName)\n }\n }\n\n function proxyStream(methodName) {\n reader.on(methodName, reemit)\n\n function reemit() {\n var args = slice.call(arguments)\n args.unshift(methodName)\n stream.emit.apply(stream, args)\n }\n }\n\n function handleEnd() {\n if (ended) {\n return\n }\n ended = true\n var args = slice.call(arguments)\n args.unshift(\"end\")\n stream.emit.apply(stream, args)\n }\n\n function reemit(err) {\n stream.emit(\"error\", err)\n }\n}\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\n\nvar Stream = require('stream').Stream\n\n\n//create an event stream and apply function to each .write\n//emitting each response as data\n//unless it's an empty callback\n\nmodule.exports = function (mapper, opts) {\n\n var stream = new Stream()\n , self = this\n , inputs = 0\n , outputs = 0\n , ended = false\n , paused = false\n , destroyed = false\n , lastWritten = 0\n , inNext = false\n\n this.opts = opts || {};\n var errorEventName = this.opts.failures ? 'failure' : 'error';\n\n // Items that are not ready to be written yet (because they would come out of\n // order) get stuck in a queue for later.\n var writeQueue = {}\n\n stream.writable = true\n stream.readable = true\n\n function queueData (data, number) {\n var nextToWrite = lastWritten + 1\n\n if (number === nextToWrite) {\n // If it's next, and its not undefined write it\n if (data !== undefined) {\n stream.emit.apply(stream, ['data', data])\n }\n lastWritten ++\n nextToWrite ++\n } else {\n // Otherwise queue it for later.\n writeQueue[number] = data\n }\n\n // If the next value is in the queue, write it\n if (writeQueue.hasOwnProperty(nextToWrite)) {\n var dataToWrite = writeQueue[nextToWrite]\n delete writeQueue[nextToWrite]\n return queueData(dataToWrite, nextToWrite)\n }\n\n outputs ++\n if(inputs === outputs) {\n if(paused) paused = false, stream.emit('drain') //written all the incoming events\n if(ended) end()\n }\n }\n\n function next (err, data, number) {\n if(destroyed) return\n inNext = true\n\n if (!err || self.opts.failures) {\n queueData(data, number)\n }\n\n if (err) {\n stream.emit.apply(stream, [ errorEventName, err ]);\n }\n\n inNext = false;\n }\n\n // Wrap the mapper function by calling its callback with the order number of\n // the item in the stream.\n function wrappedMapper (input, number, callback) {\n return mapper.call(null, input, function(err, data){\n callback(err, data, number)\n })\n }\n\n stream.write = function (data) {\n if(ended) throw new Error('map stream is not writable')\n inNext = false\n inputs ++\n\n try {\n //catch sync errors and handle them like async errors\n var written = wrappedMapper(data, inputs, next)\n paused = (written === false)\n return !paused\n } catch (err) {\n //if the callback has been called syncronously, and the error\n //has occured in an listener, throw it again.\n if(inNext)\n throw err\n next(err)\n return !paused\n }\n }\n\n function end (data) {\n //if end was called with args, write it, \n ended = true //write will emit 'end' if ended is true\n stream.writable = false\n if(data !== undefined) {\n return queueData(data, inputs)\n } else if (inputs == outputs) { //wait for processing \n stream.readable = false, stream.emit('end'), stream.destroy() \n }\n }\n\n stream.end = function (data) {\n if(ended) return\n end()\n }\n\n stream.destroy = function () {\n ended = destroyed = true\n stream.writable = stream.readable = paused = false\n process.nextTick(function () {\n stream.emit('close')\n })\n }\n stream.pause = function () {\n paused = true\n }\n\n stream.resume = function () {\n paused = false\n }\n\n return stream\n}\n\n\n\n\n","//through@2 handles this by default!\nmodule.exports = require('through')\n\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\n\nvar through = require('through')\nvar Decoder = require('string_decoder').StringDecoder\n\nmodule.exports = split\n\n//TODO pass in a function to map across the lines.\n\nfunction split (matcher, mapper, options) {\n var decoder = new Decoder()\n var soFar = ''\n var maxLength = options && options.maxLength;\n if('function' === typeof matcher)\n mapper = matcher, matcher = null\n if (!matcher)\n matcher = /\\r?\\n/\n\n function emit(stream, piece) {\n if(mapper) {\n try {\n piece = mapper(piece)\n }\n catch (err) {\n return stream.emit('error', err)\n }\n if('undefined' !== typeof piece)\n stream.queue(piece)\n }\n else\n stream.queue(piece)\n }\n\n function next (stream, buffer) {\n var pieces = ((soFar != null ? soFar : '') + buffer).split(matcher)\n soFar = pieces.pop()\n\n if (maxLength && soFar.length > maxLength)\n stream.emit('error', new Error('maximum buffer reached'))\n\n for (var i = 0; i < pieces.length; i++) {\n var piece = pieces[i]\n emit(stream, piece)\n }\n }\n\n return through(function (b) {\n next(this, decoder.write(b))\n },\n function () {\n if(decoder.end)\n next(this, decoder.end())\n if(soFar != null)\n emit(this, soFar)\n this.queue(null)\n })\n}\n\n","var duplexer = require('duplexer')\n\nmodule.exports = function () {\n\n var streams = [].slice.call(arguments)\n , first = streams[0]\n , last = streams[streams.length - 1]\n , thepipe = duplexer(first, last)\n\n if(streams.length == 1)\n return streams[0]\n else if (!streams.length)\n throw new Error('connect called with empty args')\n\n //pipe all the streams together\n\n function recurse (streams) {\n if(streams.length < 2)\n return\n streams[0].pipe(streams[1])\n recurse(streams.slice(1)) \n }\n \n recurse(streams)\n \n function onerror () {\n var args = [].slice.call(arguments)\n args.unshift('error')\n thepipe.emit.apply(thepipe, args)\n }\n \n //es.duplex already reemits the error from the first and last stream.\n //add a listener for the inner streams in the pipeline.\n for(var i = 1; i < streams.length - 1; i ++)\n streams[i].on('error', onerror)\n\n return thepipe\n}\n\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\nvar Stream = require('stream').Stream\n , es = exports\n , through = require('through')\n , from = require('from')\n , duplex = require('duplexer')\n , map = require('map-stream')\n , pause = require('pause-stream')\n , split = require('split')\n , pipeline = require('stream-combiner')\n , immediately = global.setImmediate || process.nextTick;\n\nes.Stream = Stream //re-export Stream from core\nes.through = through\nes.from = from\nes.duplex = duplex\nes.map = map\nes.pause = pause\nes.split = split\nes.pipeline = es.connect = es.pipe = pipeline\n// merge / concat\n//\n// combine multiple streams into a single stream.\n// will emit end only once\n\nes.concat = //actually this should be called concat\nes.merge = function (/*streams...*/) {\n var toMerge = [].slice.call(arguments)\n if (toMerge.length === 1 && (toMerge[0] instanceof Array)) {\n toMerge = toMerge[0] //handle array as arguments object\n }\n var stream = new Stream()\n stream.setMaxListeners(0) // allow adding more than 11 streams\n var endCount = 0\n stream.writable = stream.readable = true\n\n if (toMerge.length) {\n toMerge.forEach(function (e) {\n e.pipe(stream, {end: false})\n var ended = false\n e.on('end', function () {\n if(ended) return\n ended = true\n endCount ++\n if(endCount == toMerge.length)\n stream.emit('end')\n })\n })\n } else {\n process.nextTick(function () {\n stream.emit('end')\n })\n }\n \n stream.write = function (data) {\n this.emit('data', data)\n }\n stream.destroy = function () {\n toMerge.forEach(function (e) {\n if(e.destroy) e.destroy()\n })\n }\n return stream\n}\n\n\n// writable stream, collects all events into an array\n// and calls back when 'end' occurs\n// mainly I'm using this to test the other functions\n\nes.writeArray = function (done) {\n if ('function' !== typeof done)\n throw new Error('function writeArray (done): done must be function')\n\n var a = new Stream ()\n , array = [], isDone = false\n a.write = function (l) {\n array.push(l)\n }\n a.end = function () {\n isDone = true\n done(null, array)\n }\n a.writable = true\n a.readable = false\n a.destroy = function () {\n a.writable = a.readable = false\n if(isDone) return\n done(new Error('destroyed before end'), array)\n }\n return a\n}\n\n//return a Stream that reads the properties of an object\n//respecting pause() and resume()\n\nes.readArray = function (array) {\n var stream = new Stream()\n , i = 0\n , paused = false\n , ended = false\n\n stream.readable = true\n stream.writable = false\n\n if(!Array.isArray(array))\n throw new Error('event-stream.read expects an array')\n\n stream.resume = function () {\n if(ended) return\n paused = false\n var l = array.length\n while(i < l && !paused && !ended) {\n stream.emit('data', array[i++])\n }\n if(i == l && !ended)\n ended = true, stream.readable = false, stream.emit('end')\n }\n process.nextTick(stream.resume)\n stream.pause = function () {\n paused = true\n }\n stream.destroy = function () {\n ended = true\n stream.emit('close')\n }\n return stream\n}\n\n//\n// readable (asyncFunction)\n// return a stream that calls an async function while the stream is not paused.\n//\n// the function must take: (count, callback) {...\n//\n\nes.readable =\nfunction (func, continueOnError) {\n var stream = new Stream()\n , i = 0\n , paused = false\n , ended = false\n , reading = false\n\n stream.readable = true\n stream.writable = false\n\n if('function' !== typeof func)\n throw new Error('event-stream.readable expects async function')\n\n stream.on('end', function () { ended = true })\n\n function get (err, data) {\n\n if(err) {\n stream.emit('error', err)\n if(!continueOnError) stream.emit('end')\n } else if (arguments.length > 1)\n stream.emit('data', data)\n\n immediately(function () {\n if(ended || paused || reading) return\n try {\n reading = true\n func.call(stream, i++, function () {\n reading = false\n get.apply(null, arguments)\n })\n } catch (err) {\n stream.emit('error', err)\n }\n })\n }\n stream.resume = function () {\n paused = false\n get()\n }\n process.nextTick(get)\n stream.pause = function () {\n paused = true\n }\n stream.destroy = function () {\n stream.emit('end')\n stream.emit('close')\n ended = true\n }\n return stream\n}\n\n\n//\n// map sync\n//\n\nes.mapSync = function (sync) {\n return es.through(function write(data) {\n var mappedData\n try {\n mappedData = sync(data)\n } catch (err) {\n return this.emit('error', err)\n }\n if (mappedData !== undefined)\n this.emit('data', mappedData)\n })\n}\n\n//\n// log just print out what is coming through the stream, for debugging\n//\n\nes.log = function (name) {\n return es.through(function (data) {\n var args = [].slice.call(arguments)\n if(name) console.error(name, data)\n else console.error(data)\n this.emit('data', data)\n })\n}\n\n\n//\n// child -- pipe through a child process\n//\n\nes.child = function (child) {\n\n return es.duplex(child.stdin, child.stdout)\n\n}\n\n//\n// parse\n//\n// must be used after es.split() to ensure that each chunk represents a line\n// source.pipe(es.split()).pipe(es.parse())\n\nes.parse = function (options) {\n var emitError = !!(options ? options.error : false)\n return es.through(function (data) {\n var obj\n try {\n if(data) //ignore empty lines\n obj = JSON.parse(data.toString())\n } catch (err) {\n if (emitError)\n return this.emit('error', err)\n return console.error(err, 'attempting to parse:', data)\n }\n //ignore lines that where only whitespace.\n if(obj !== undefined)\n this.emit('data', obj)\n })\n}\n//\n// stringify\n//\n\nes.stringify = function () {\n var Buffer = require('buffer').Buffer\n return es.mapSync(function (e){\n return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\\n'\n })\n}\n\n//\n// replace a string within a stream.\n//\n// warn: just concatenates the string and then does str.split().join().\n// probably not optimal.\n// for smallish responses, who cares?\n// I need this for shadow-npm so it's only relatively small json files.\n\nes.replace = function (from, to) {\n return es.pipeline(es.split(from), es.join(to))\n}\n\n//\n// join chunks with a joiner. just like Array#join\n// also accepts a callback that is passed the chunks appended together\n// this is still supported for legacy reasons.\n//\n\nes.join = function (str) {\n\n //legacy api\n if('function' === typeof str)\n return es.wait(str)\n\n var first = true\n return es.through(function (data) {\n if(!first)\n this.emit('data', str)\n first = false\n this.emit('data', data)\n return true\n })\n}\n\n\n//\n// wait. callback when 'end' is emitted, with all chunks appended as string.\n//\n\nes.wait = function (callback) {\n var arr = []\n return es.through(function (data) { arr.push(data) },\n function () {\n var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr)\n : arr.join('')\n this.emit('data', body)\n this.emit('end')\n if(callback) callback(null, body)\n })\n}\n\nes.pipeable = function () {\n throw new Error('[EVENT-STREAM] es.pipeable is deprecated')\n}\n","const EventEmitter = require('events').EventEmitter;\nconst net = require('net');\nconst message = require('./message');\nconst clientHandshake = require('./handshake');\nconst { getDbusAddressFromFs } = require('./address-x11');\nconst { Message } = require('./message-type');\nconst { messageToJsFmt, marshallMessage } = require('./marshall-compat');\n\nfunction createStream (opts) {\n let { busAddress, negotiateUnixFd } = opts;\n\n if (negotiateUnixFd === undefined) {\n negotiateUnixFd = false;\n }\n\n // TODO according to the dbus spec, we should start a new server if the bus\n // address cannot be found.\n if (!busAddress) {\n busAddress = process.env.DBUS_SESSION_BUS_ADDRESS;\n }\n if (!busAddress) {\n busAddress = getDbusAddressFromFs();\n }\n\n const addresses = busAddress.split(';');\n for (let i = 0; i < addresses.length; ++i) {\n const address = addresses[i];\n const familyParams = address.split(':');\n const family = familyParams[0];\n const params = {};\n familyParams[1].split(',').forEach(function (p) {\n const keyVal = p.split('=');\n params[keyVal[0]] = keyVal[1];\n });\n\n try {\n switch (family.toLowerCase()) {\n case 'tcp': {\n const host = params.host || 'localhost';\n const port = params.port;\n return net.createConnection(port, host);\n }\n case 'unix': {\n if (params.socket) {\n return net.createConnection(params.socket);\n }\n if (params.abstract) {\n const usocket = require('usocket');\n const sock = new usocket.USocket({ path: '\\u0000' + params.abstract });\n sock.supportsUnixFd = negotiateUnixFd;\n return sock;\n }\n if (params.path) {\n try {\n const usocket = require('usocket');\n const sock = new usocket.USocket({ path: params.path });\n sock.supportsUnixFd = negotiateUnixFd;\n return sock;\n } catch (err) {\n // TODO: maybe emit warning?\n return net.createConnection(params.path);\n }\n }\n throw new Error(\n \"not enough parameters for 'unix' connection - you need to specify 'socket' or 'abstract' or 'path' parameter\"\n );\n }\n case 'unixexec': {\n const eventStream = require('event-stream');\n const spawn = require('child_process').spawn;\n const args = [];\n for (let n = 1; params['arg' + n]; n++) args.push(params['arg' + n]);\n const child = spawn(params.path, args);\n // duplex socket is auto connected so emit connect event next frame\n setTimeout(() => eventStream.emit('connected'), 0);\n\n return eventStream.duplex(child.stdin, child.stdout);\n }\n default: {\n throw new Error('unknown address type:' + family);\n }\n }\n } catch (e) {\n if (i < addresses.length - 1) {\n console.warn(e.message);\n continue;\n } else {\n throw e;\n }\n }\n }\n}\n\nfunction createConnection (opts) {\n const self = new EventEmitter();\n opts = opts || {};\n const stream = (self.stream = createStream(opts));\n stream.setNoDelay && stream.setNoDelay();\n\n stream.on('error', function (err) {\n // forward network and stream errors\n self.emit('error', err);\n });\n\n stream.on('end', function () {\n self.emit('end');\n self.message = function () {\n self.emit('error', new Error('Tried to write a message to a closed stream'));\n };\n });\n\n self.end = function () {\n stream.end();\n return self;\n };\n\n function afterHandshake (error, guid) {\n if (error) {\n return self.emit('error', error);\n }\n self.guid = guid;\n self.emit('connect');\n message.unmarshalMessages(\n stream,\n function (message) {\n try {\n message = new Message(messageToJsFmt(message));\n } catch (err) {\n self.emit('error', err, `There was an error receiving a message (this is probably a bug in dbus-next): ${message}`);\n return;\n }\n self.emit('message', message);\n },\n opts\n );\n }\n stream.once('connect', () => clientHandshake(stream, opts, afterHandshake));\n stream.once('connected', () => clientHandshake(stream, opts, afterHandshake));\n\n self._messages = [];\n\n // pre-connect version, buffers all messages. replaced after connect\n self.message = function (msg) {\n self._messages.push(msg);\n };\n\n self.once('connect', function () {\n self.state = 'connected';\n for (let i = 0; i < self._messages.length; ++i) {\n const [data, fds] = marshallMessage(self._messages[i]);\n if (stream.supportsUnixFd) {\n stream.write({ data, fds });\n } else {\n stream.write(data);\n }\n }\n self._messages.length = 0;\n\n // no need to buffer once connected\n self.message = function (msg) {\n if (!stream.writable) {\n throw new Error('Cannot send message, stream is closed');\n }\n const [data, fds] = marshallMessage(msg);\n if (stream.supportsUnixFd) {\n stream.write({ data, fds });\n } else {\n if (fds.length > 0) {\n console.warn('Sending file descriptors is not supported in current bus connection');\n }\n stream.write(data);\n }\n };\n });\n\n return self;\n}\n\nmodule.exports = createConnection;\n","const constants = require('./lib/constants');\nconst MessageBus = require('./lib/bus');\nconst errors = require('./lib/errors');\nconst {Variant} = require('./lib//variant');\nconst {Message} = require('./lib/message-type.js');\nconst iface = require('./lib/service/interface');\nconst createConnection = require('./lib/connection.js');\n\nlet createClient = function(params) {\n let connection = createConnection(params || {});\n return new MessageBus(connection);\n};\n\n/**\n * Create a new {@link MessageBus} client on the DBus system bus to connect to\n * interfaces or request service names. Connects to the socket specified by the\n * `DBUS_SYSTEM_BUS_ADDRESS` environment variable or\n * `unix:path=/var/run/dbus/system_bus_socket`.\n *\n * @param {object} [options] - Options for `MessageBus` creation.\n * @param {object} [options.negotiateUnixFd] - Whether this bus should support the negotiation of Unix file descriptors.\n */\nmodule.exports.systemBus = function(opts) {\n if(!opts)\n opts = {};\n return createClient({\n negotiateUnixFd: opts.negotiateUnixFd,\n busAddress:\n process.env.DBUS_SYSTEM_BUS_ADDRESS ||\n 'unix:path=/var/run/dbus/system_bus_socket'\n });\n};\n\n/**\n * Create a new {@link MessageBus} client on the DBus session bus to connect to\n * interfaces or request service names.\n *\n * @param {object} [options] - Options for `MessageBus` creation.\n * @param {object} [options.busAddress] - The socket path for the session bus.\n * @param {object} [options.negotiateUnixFd] - Whether this bus should support the negotiation of Unix file descriptors.\n * Defaults to finding the bus address in the manner specified in the DBus\n * specification. The bus address will first be read from the\n * `DBUS_SESSION_BUS_ADDRESS` environment variable and when that is not\n * available, found from the `$HOME/.dbus` directory.\n */\nmodule.exports.sessionBus = function(opts) {\n return createClient(opts);\n};\n\n/**\n * Use JSBI as a polyfill for long integer types ('x' and 't') in the client\n * and the service. This is required for Node verisons that do not support the\n * native `BigInt` class which is used by default for these types (version <\n * 10.8.0).\n *\n * @function\n * @param {boolean} compat - pass `true` to use JSBI.\n */\nmodule.exports.setBigIntCompat = require('./lib/library-options').setBigIntCompat\n\nmodule.exports.NameFlag = constants.NameFlag;\nmodule.exports.RequestNameReply = constants.RequestNameReply;\nmodule.exports.ReleaseNameReply = constants.ReleaseNameReply;\nmodule.exports.MessageType = constants.MessageType;\nmodule.exports.MessageFlag = constants.MessageFlag;\n\nmodule.exports.interface = iface;\nmodule.exports.Variant = Variant;\nmodule.exports.Message = Message;\nmodule.exports.validators = require('./lib/validators');\nmodule.exports.DBusError = errors.DBusError;\n","/** Canonical runtime je jediným hodnotovým vlastníkem root i observed fasády. */\nexport { connect, connectObserved } from './client';\nexport { TaskError } from './errors';\nexport { prepareObserved } from './observed-validation';\nexport { nullIO } from './types';\nexport { prepare } from './validation';\nexport type {\n\tObservedFinalizationOptions, ObservedFinalizationReceipt,\n\tObservedLookupResult, ObservedOutputEvent, ObservedProcessSnapshot, ObservedStartOptions,\n\tObservedStartReceipt, ObservedStartResult, ObservedStopReceipt, ObservedTaskClient,\n\tObservedTaskIdentity, ObservedTaskIntent, ObservedTaskObservation, ObservedTaskReference,\n\tObservedTaskSnapshot, ObservedTaskSpec,\n} from './observed-types';\nexport type {\n\tCleanupState, ConnectOptions, DiagnosticEvent, ErrorCode, ErrorDetails,\n\tLookupResult, ManagerIdentity, ReleaseOptions, ReleaseReceipt, StartReceipt, StopOptions,\n\tStopReceipt, SystemdProperty, TaskClient, TaskEvidence, TaskIdentity,\n\tTaskInput, TaskIntent, TaskIO, TaskOutput, TaskReference, TaskResult,\n\tTaskSnapshot, TaskSpec, WaitOptions,\n} from './types';\n","import * as crypto from 'node:crypto';\nimport * as clientCore from './client-core';\nimport * as diagnostics from './diagnostics';\nimport * as errors from './errors';\nimport * as io from './io';\nimport * as observedOperations from './observed-operations';\nimport * as observedSystemd from './observed-systemd';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport * as transport from './transport';\nimport * as validation from './validation';\nimport * as waiting from './waiting';\nimport type * as observedTypes from './observed-types';\nimport type * as types from './types';\n\n/** Library-owned observation and descriptor resources around manager-owned task processes. */\nexport class SystemdTaskClient implements types.TaskClient, observedTypes.ObservedTaskClient {\n\t/** Binding used by every persisted reference created through this client. */\n\treadonly manager: types.ManagerIdentity;\n\t/** Sdílené vlastnictví transportu, mutation front, reads a lokálních handles. */\n\tprivate readonly core: clientCore.ClientCore;\n\t/** Tříjednotkový codec deleguje do stejného core místo druhého klienta. */\n\tprivate readonly observed: observedOperations.ObservedOperations;\n\n\t/** Bind the concrete adapter; the public entrypoint creates it only during connect(). */\n\tconstructor(adapter: transport.Transport, sink: diagnostics.Diagnostics) {\n\t\tthis.core = new clientCore.ClientCore(adapter, sink);\n\t\tthis.manager = this.core.manager;\n\t\tthis.observed = new observedOperations.ObservedOperations(this.core);\n\t}\n\n\t/** Read both owned units concurrently, sharing only requests already in progress. */\n\tprivate async readPair(identity: types.TaskIdentity): Promise<systemd.UnitPair> {\n\t\tconst [task, retention] = await this.core.readUnits(identity, [identity.unitName, identity.retentionUnitName]);\n\t\treturn { task: task ?? null, retention: retention ?? null };\n\t}\n\n\t/** Ownership is checked before invoking any lifecycle or cleanup operation on names. */\n\tprivate async checkedPair(target: types.TaskIntent | types.TaskReference): Promise<systemd.UnitPair> {\n\t\tif ('manager' in target) systemd.assertManager(target.manager, this.manager);\n\t\tconst pair = await this.readPair(target);\n\t\tsystemd.assertOwnership(target, pair);\n\t\tif ('manager' in target) systemd.assertReference(target, pair);\n\t\treturn pair;\n\t}\n\n\t/** An incomplete auxiliary record is distinct from both a found result and total absence. */\n\tprivate async lookupInternal(target: types.TaskIntent | types.TaskReference): Promise<types.LookupResult> {\n\t\tconst pair = await this.checkedPair(target);\n\t\tif (!pair.task && !pair.retention) return { status: 'not-found', identity: validation.identityOnly(target) };\n\t\tif (!pair.task) return { status: 'incomplete', reference: systemd.reference(target, this.manager, pair) };\n\t\tconst snapshot = await systemd.snapshot(target, this.manager, pair);\n\t\treturn { status: 'found', reference: snapshot.reference, snapshot };\n\t}\n\n\t/** The returned receipt proves only manager acceptance; callers observe execution separately. */\n\tasync start(value: types.TaskIntent, channels: types.TaskIO): Promise<types.StartReceipt> {\n\t\tconst intent = validation.validateIntent(value);\n\t\tconst validatedIO = validation.validateIO(channels);\n\t\treturn await this.core.diagnostics.run(intent, /** Establish task correlation before queueing creation. */ () => this.core.mutate(intent, /** Own submission staging and descriptor cleanup for this one attempt. */ async () => {\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet opened: io.OpenIO | undefined;\n\t\t\ttry {\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.assertUnattempted(intent);\n\t\t\t\tconst inherited = await this.core.transport.readEnvironment();\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\topened = io.openIO(validatedIO);\n\t\t\t\tconst mapped = systemd.creationProperties(intent, opened, inherited);\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.markAttempt(intent);\n\t\t\t\tstage = 'submitted';\n\t\t\t\tthis.core.diagnostics.emit('start.submitted');\n\t\t\t\tconst jobPath = await this.core.transport.start(intent.unitName, mapped.task, [{ name: intent.retentionUnitName, properties: mapped.retention }]);\n\t\t\t\tstage = 'accepted';\n\t\t\t\tthis.core.diagnostics.emit('start.accepted');\n\t\t\t\tthis.core.hub.notify(intent.unitName);\n\t\t\t\treturn Object.freeze({ outcome: 'accepted', identity: validation.identityOnly(intent), manager: this.manager, jobPath });\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'start', intent, stage);\n\t\t\t\tthis.core.diagnostics.emit('start.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { opened?.close(); }\n\t\t}));\n\t}\n\n\t/** Deleguje observed start do tříjednotkového codecu nad stejným transportem. */\n\tasync startObserved(intent: observedTypes.ObservedTaskIntent, options: observedTypes.ObservedStartOptions): Promise<observedTypes.ObservedStartResult> {\n\t\treturn await this.observed.startObserved(intent, options);\n\t}\n\n\t/** Registruje manager-owned dokončení bez změny standardního retention kontraktu. */\n\tasync finalizeAfterCompletion(reference: observedTypes.ObservedTaskReference, options: observedTypes.ObservedFinalizationOptions): Promise<observedTypes.ObservedFinalizationReceipt> {\n\t\treturn await this.observed.finalizeAfterCompletion(reference, options);\n\t}\n\n\t/** Read existing evidence without treating absence as permission for another start. */\n\t/** Observed overload čte tříjednotkovou topologii bez reconnectu outputu. */\n\tlookup(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedLookupResult>;\n\tlookup(value: types.TaskIntent | types.TaskReference): Promise<types.LookupResult>;\n\t/** Směruje podle explicitního versioned kind, nikoliv podle package entrypointu. */\n\tasync lookup(value: types.TaskIntent | types.TaskReference | observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<types.LookupResult | observedTypes.ObservedLookupResult> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.lookup(value as observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference);\n\t\tconst target = validation.validateTarget(value);\n\t\treturn await this.core.diagnostics.run(target, /** Keep lookup diagnostics in the requested task scope. */ () => this.lookupInternal(target));\n\t}\n\n\t/** Observe an exact reference; missing units and manager errors remain distinct categories. */\n\t/** Observed overload vyžaduje exact invocation identity všech dostupných rolí. */\n\tinspect(value: observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedTaskSnapshot>;\n\tinspect(value: types.TaskReference): Promise<types.TaskSnapshot>;\n\t/** Validuje a směruje snapshot do správného topology codecu. */\n\tasync inspect(value: types.TaskReference | observedTypes.ObservedTaskReference): Promise<types.TaskSnapshot | observedTypes.ObservedTaskSnapshot> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.inspect(value as observedTypes.ObservedTaskReference);\n\t\tconst reference = validation.validateReference(value);\n\t\treturn await this.core.diagnostics.run(reference, /** Inspect evidence in the exact reference correlation scope. */ async () => {\n\t\t\tconst found = await this.lookupInternal(reference);\n\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The referenced task result is unavailable.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'task-unit-missing', taskId: reference.id });\n\t\t\treturn found.snapshot;\n\t\t});\n\t}\n\n\t/** Subscribe before reading, then pin newly observed IDs while waiting on an intention. */\n\tprivate async waitInternal(target: types.TaskIntent | types.TaskReference, control: waiting.WaitControl): Promise<types.TaskSnapshot> {\n\t\tcontrol.check();\n\t\tthis.core.assertOpen();\n\t\tconst watch = this.core.hub.watch(target.unitName);\n\t\tlet mainInvocation: string | null = null;\n\t\tlet retentionInvocation: string | null = null;\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tcontrol.check();\n\t\t\t\tconst generation = watch.version();\n\t\t\t\tconst found = await control.race(this.lookupInternal(target));\n\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task result is no longer available.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'task-unit-missing', taskId: target.id });\n\t\t\t\tconst captured = found.reference;\n\t\t\t\tif ((mainInvocation !== null && captured.invocationId !== mainInvocation) || (retentionInvocation !== null && captured.retentionInvocationId !== retentionInvocation)) throw new errors.TaskError('IDENTITY_CONFLICT', 'The task identity changed while waiting.', { reason: 'invocation-mismatch', taskId: target.id });\n\t\t\t\tmainInvocation = captured.invocationId;\n\t\t\t\tretentionInvocation = captured.retentionInvocationId;\n\t\t\t\tif (found.snapshot.managerTerminal) {\n\t\t\t\t\tthis.core.diagnostics.emit(found.snapshot.cleanup === 'complete' ? 'wait.completed' : 'wait.cleanup-incomplete');\n\t\t\t\t\treturn found.snapshot;\n\t\t\t\t}\n\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t}\n\t\t} finally { watch.close(); }\n\t}\n\n\t/** Local abort and timeout leave the task, other waiters, and manager timers untouched. */\n\t/** Observed overload čeká na payload i guardian cleanup. */\n\twait(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options?: types.WaitOptions): Promise<observedTypes.ObservedTaskSnapshot>;\n\twait(value: types.TaskIntent | types.TaskReference, options?: types.WaitOptions): Promise<types.TaskSnapshot>;\n\t/** Zachová stejný local cancellation kontrakt pro obě topologie. */\n\tasync wait(value: types.TaskIntent | types.TaskReference | observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options: types.WaitOptions = {}): Promise<types.TaskSnapshot | observedTypes.ObservedTaskSnapshot> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.wait(value as observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options);\n\t\tconst target = validation.validateTarget(value);\n\t\tconst validated = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(target, /** Own independent cancellation and diagnostics for this waiter. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(validated);\n\t\t\ttry { return await this.waitInternal(target, control); }\n\t\t\tcatch (error) {\n\t\t\t\tif (error instanceof errors.TaskError) this.core.diagnostics.emit('wait.error', error.code);\n\t\t\t\tthrow error;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Receipt acceptance survives cancellation; an in-flight unacknowledged stop remains unknown. */\n\t/** Observed overload zastavuje jen payload a čeká na guardian drain. */\n\tstop(value: observedTypes.ObservedTaskReference, options?: types.StopOptions): Promise<observedTypes.ObservedStopReceipt>;\n\tstop(value: types.TaskReference, options?: types.StopOptions): Promise<types.StopReceipt>;\n\t/** Sdílí mutation serializaci, ale zachová topology-specific receipt. */\n\tasync stop(value: types.TaskReference | observedTypes.ObservedTaskReference, options: types.StopOptions = {}): Promise<types.StopReceipt | observedTypes.ObservedStopReceipt> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.stop(value as observedTypes.ObservedTaskReference, options);\n\t\tconst reference = validation.validateReference(value);\n\t\tconst validated = validation.validateWaitOptions(options, true);\n\t\treturn await this.core.diagnostics.run(reference, /** Preserve stop delivery evidence through local cancellation. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(validated);\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\ttry {\n\t\t\t\tcontrol.check();\n\t\t\t\treturn await control.race(this.core.mutate(reference, /** Serialize stop validation and submission for this task. */ async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tconst found = await control.race(this.lookupInternal(reference));\n\t\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task to stop is unavailable.', { reason: 'unit-not-found' });\n\t\t\t\t\tif (found.snapshot.phase === 'completed') return { outcome: 'already-completed', reference, jobPath: null, completion: found.snapshot };\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\tconst jobPath = await control.race(this.core.transport.stop(reference.unitName));\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\tthis.core.diagnostics.emit('stop.accepted');\n\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\tconst completion = validated.wait ? await this.waitInternal(reference, control) : null;\n\t\t\t\t\treturn { outcome: 'accepted', reference, jobPath, completion };\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'stop', reference, stage);\n\t\t\t\tthis.core.diagnostics.emit('stop.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Refuse to clear live state, including pending jobs and incomplete cgroup cleanup. */\n\tprivate async assertReleasable(reference: types.TaskReference, pair: systemd.UnitPair): Promise<void> {\n\t\tif (!pair.task) return;\n\t\tconst state = await systemd.snapshot(reference, this.manager, pair);\n\t\tif (state.phase !== 'completed') throw new errors.TaskError('TASK_RUNNING', 'A task can be released only after confirmed cleanup.', { reason: 'task-not-completed', taskId: reference.id });\n\t}\n\n\t/** Return true only for an acknowledged reset; explicit concurrent absence is an idempotent no-op. */\n\tprivate async resetOwnFailed(name: string): Promise<boolean> {\n\t\ttry { await this.core.transport.resetFailed(name); return true; }\n\t\tcatch (error) { if (!clientCore.isAbsence(error)) throw error; return false; }\n\t}\n\n\t/** Remove retention only after both identities and task cleanup have been checked. */\n\t/** Observed overload kontroluje payload i guardian před retention cleanupem. */\n\trelease(value: observedTypes.ObservedTaskReference, options?: types.ReleaseOptions): Promise<types.ReleaseReceipt>;\n\trelease(value: types.TaskReference, options?: types.ReleaseOptions): Promise<types.ReleaseReceipt>;\n\t/** Směruje release podle identity bez vytváření paralelního cleanup enginu. */\n\tasync release(value: types.TaskReference | observedTypes.ObservedTaskReference, options: types.ReleaseOptions = {}): Promise<types.ReleaseReceipt> {\n\t\tif (observedValidation.isObservedValue(value)) return await this.observed.release(value as observedTypes.ObservedTaskReference, options);\n\t\tconst reference = validation.validateReference(value);\n\t\tconst validated = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(reference, /** Bound release observation without extending manager retention indefinitely. */ async () => {\n\t\t\tconst control = new waiting.WaitControl({ ...validated, timeoutMs: validated.timeoutMs ?? clientCore.defaultReleaseTimeoutMs });\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet acceptedCleanupMutations = 0;\n\t\t\ttry {\n\t\t\t\treturn await control.race(this.core.mutate(reference, /** Serialize ownership checks and retention removal for this task. */ async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tlet pair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tif (!pair.task && !pair.retention) return { released: true, alreadyReleased: true, collected: true };\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.task?.properties.ActiveState === 'failed') {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(reference.unitName))) {\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t}\n\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.retention?.properties.ActiveState === 'failed') {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(reference.retentionUnitName))) {\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t}\n\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.retention) {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait control.race(this.core.transport.stop(reference.retentionUnitName));\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (error) { if (!clientCore.isAbsence(error)) throw error; stage = previousStage; }\n\t\t\t\t\t}\n\t\t\t\t\tconst watch = this.core.hub.watch(reference.unitName);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\tconst generation = watch.version();\n\t\t\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\t\t\tif (!pair.retention || (systemd.managerTerminal(pair.retention) && pair.retention.properties.ActiveState !== 'failed')) {\n\t\t\t\t\t\t\t\tthis.core.diagnostics.emit('release.completed');\n\t\t\t\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\t\t\t\treturn { released: true, alreadyReleased: false, collected: !pair.task && !pair.retention };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally { watch.close(); }\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.releaseError(error, reference, stage, acceptedCleanupMutations);\n\t\t\t\tthis.core.diagnostics.emit('release.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Tear down local resources immediately, without waiting for task output EOF or process exit. */\n\tasync disconnect(): Promise<void> {\n\t\tawait this.core.disconnect();\n\t}\n}\n\n/** Otevře společný concrete klient po topology-specific preflightu. */\nasync function openClient(options: types.ConnectOptions, observed: boolean): Promise<SystemdTaskClient> {\n\tconst validated = validation.validateConnectOptions(options);\n\tconst sink = new diagnostics.Diagnostics(crypto.randomUUID(), validated.onDiagnostic);\n\ttry {\n\t\tif (observed) await observedSystemd.assertObservedAvailable();\n\t\telse await systemd.assertRetentionAvailable();\n\t\tconst adapter = await transport.DbusTransport.open(validated.requestTimeoutMs);\n\t\tconst client = new SystemdTaskClient(adapter, sink);\n\t\tsink.emit('connection.connected');\n\t\treturn client;\n\t} catch (error) {\n\t\tif (error instanceof errors.TaskError) sink.emit('connection.error', error.code);\n\t\tsink.dispose();\n\t\tthrow error;\n\t}\n}\n\n/** Connect explicitly to the local user manager; package import has no connection side effects. */\nexport async function connect(options: types.ConnectOptions = {}): Promise<types.TaskClient> {\n\treturn await openClient(options, false);\n}\n\n/** Připojí stejný runtime až po guardian a systemd prerequisites preflightu. */\nexport async function connectObserved(options: types.ConnectOptions = {}): Promise<observedTypes.ObservedTaskClient> {\n\treturn await openClient(options, true);\n}\n","import * as util from 'node:util';\nimport type * as types from './types';\n\n/** A recoverable API error with stable categories and redacted default formatting. */\nexport class TaskError extends Error {\n\t/** Stable category used by applications instead of parsing human-readable messages. */\n\treadonly code: types.ErrorCode;\n\t/** Safe delivery and identity metadata; never contains a command specification. */\n\treadonly details: types.ErrorDetails;\n\n\t/** Preserve the original cause for explicit access while keeping default output redacted. */\n\tconstructor(code: types.ErrorCode, message: string, details: types.ErrorDetails = {}, cause?: unknown) {\n\t\tsuper(message, cause === undefined ? undefined : { cause });\n\t\tthis.name = 'TaskError';\n\t\tthis.code = code;\n\t\tthis.details = Object.freeze({ ...details });\n\t}\n\n\t/** Serialization deliberately excludes raw causes, stack contents, and request payloads. */\n\ttoJSON(): {\n\t\t/** Stable error class name for serialized consumers. */\n\t\tname: string;\n\t\t/** Public recovery category. */\n\t\tcode: types.ErrorCode;\n\t\t/** Redacted explanation safe for default logs. */\n\t\tmessage: string;\n\t\t/** Safe delivery evidence without raw causes. */\n\t\tdetails: types.ErrorDetails;\n\t} {\n\t\treturn { name: this.name, code: this.code, message: this.message, details: this.details };\n\t}\n\n\t/** Console and util.inspect must not expand a transport cause containing request data. */\n\t[util.inspect.custom](): string {\n\t\treturn `${this.name} [${this.code}]: ${this.message}`;\n\t}\n}\n\n/** Extract an OS or transport category without copying its potentially sensitive message. */\nexport function errorCode(error: unknown): string | undefined {\n\tif (typeof error !== 'object' || error === null) return undefined;\n\tif ('code' in error && typeof error.code === 'string') return error.code;\n\treturn undefined;\n}\n\n/** Identify an explicit manager or bus error reply separately from local disconnection. */\nexport function dbusErrorName(error: unknown): string | undefined {\n\tif (typeof error !== 'object' || error === null) return undefined;\n\tif ('type' in error && typeof error.type === 'string') return error.type;\n\treturn undefined;\n}\n","import * as errors from './errors';\nimport type * as types from './types';\n\n/** A local deadline and abort scope that never cancels the underlying task or shared read. */\nexport class WaitControl {\n\t/** Internal cancellation combines the caller's abort with a local deadline. */\n\tprivate readonly controller = new AbortController();\n\t/** Local timer, absent for an explicitly unbounded wait. */\n\tprivate readonly timer: ReturnType<typeof setTimeout> | undefined;\n\t/** Caller signal whose listener must be removed at settlement. */\n\tprivate readonly external: AbortSignal | undefined;\n\t/** Captured listener identity allows deterministic cleanup. */\n\tprivate readonly onAbort: () => void;\n\n\t/** A timeout is an observation deadline, never a manager escalation timeout. */\n\tconstructor(options: types.WaitOptions) {\n\t\tthis.external = options.signal;\n\t\tthis.onAbort = /** Propagate caller cancellation into this local wait scope only. */ () => this.controller.abort(new errors.TaskError('WAIT_ABORTED', 'Local waiting was aborted.'));\n\t\tif (options.timeoutMs !== undefined) this.timer = setTimeout(/** Expire local observation without changing systemd execution timers. */ () => this.controller.abort(new errors.TaskError('WAIT_TIMEOUT', 'The local waiting deadline expired.')), options.timeoutMs);\n\t\tif (this.external?.aborted) this.onAbort();\n\t\telse this.external?.addEventListener('abort', this.onAbort, { once: true });\n\t}\n\n\t/** Refuse an already-cancelled operation before it can submit a mutation. */\n\tcheck(): void {\n\t\tif (this.controller.signal.aborted) throw this.controller.signal.reason;\n\t}\n\n\t/** Stop this caller's observation while leaving a shared request or server mutation intact. */\n\tasync race<T>(promise: Promise<T>): Promise<T> {\n\t\tif (this.controller.signal.aborted) {\n\t\t\tvoid promise.catch(/** Consume eventual settlement of work that outlives the cancelled caller. */ () => { /* The underlying shared read or mutation still owns its settlement. */ });\n\t\t\tthis.check();\n\t\t}\n\t\tconst signal = this.controller.signal;\n\t\tlet abort: (() => void) | undefined;\n\t\tconst cancelled = new Promise<never>(/** Bridge local cancellation into the current asynchronous observation. */ (_resolve, reject) => {\n\t\t\tabort = /** Reject with the original local cancellation category. */ () => reject(signal.reason);\n\t\t\tsignal.addEventListener('abort', abort, { once: true });\n\t\t});\n\t\ttry { return await Promise.race([promise, cancelled]); }\n\t\tfinally { if (abort) signal.removeEventListener('abort', abort); }\n\t}\n\n\t/** Remove every local timer and listener without touching a running task. */\n\tdispose(): void {\n\t\tclearTimeout(this.timer);\n\t\tthis.external?.removeEventListener('abort', this.onAbort);\n\t}\n}\n\n/** A subscription token closes the snapshot-to-signal race using a generation counter. */\nexport interface Watch {\n\t/** Current generation, sampled before reading a snapshot. */\n\tversion(): number;\n\t/** Resolve immediately when an event arrived during the preceding snapshot. */\n\tnext(version: number): Promise<void>;\n\t/** Detach this caller without affecting other observers. */\n\tclose(): void;\n}\n\n/** Internal shared watch state: one bounded reconciliation timer per observed task. */\ninterface WatchGroup {\n\t/** Monotonically increasing notification generation. */\n\tgeneration: number;\n\t/** Independent waiting callbacks sharing the same source events. */\n\treadonly callbacks: Set<() => void>;\n\t/** Number of live watch tokens, including callers currently reading. */\n\tusers: number;\n\t/** Periodic reconciliation covers missed or invalidated property notifications. */\n\treadonly timer: ReturnType<typeof setInterval>;\n}\n\n/** Share systemd notifications and low-frequency reconciliation across concurrent waiters. */\nexport class ObservationHub {\n\t/** Entries exist only while a caller is waiting on a unit. */\n\tprivate readonly groups = new Map<string, WatchGroup>();\n\n\t/** Wake one task, or every task after manager disconnection. */\n\tnotify(unitName?: string): void {\n\t\tfor (const [name, group] of this.groups) {\n\t\t\tif (unitName !== undefined && unitName !== name) continue;\n\t\t\tgroup.generation++;\n\t\t\tfor (const callback of [...group.callbacks]) callback();\n\t\t}\n\t}\n\n\t/** Subscribe before the first snapshot, then compare generations before sleeping. */\n\twatch(unitName: string): Watch {\n\t\tlet group = this.groups.get(unitName);\n\t\tif (!group) {\n\t\t\tgroup = { generation: 0, callbacks: new Set(), users: 0, timer: setInterval(/** Reconcile snapshots even if systemd notifications are missed. */ () => this.notify(unitName), 1000) };\n\t\t\tthis.groups.set(unitName, group);\n\t\t}\n\t\tconst state = group;\n\t\tstate.users++;\n\t\tlet closed = false;\n\t\tlet pending: (() => void) | undefined;\n\t\treturn {\n\t\t\t/** Capture notifications already observed by the shared source. */\n\t\t\tversion: () => state.generation,\n\t\t\t/** Retain only one callback per caller, never one callback per event. */\n\t\t\tnext: async version => {\n\t\t\t\tif (closed || version !== state.generation) return;\n\t\t\t\tawait new Promise<void>(/** Retain a single wake callback for this observer. */ resolve => {\n\t\t\t\t\tpending = /** Remove this wake callback before resolving the observer. */ () => {\n\t\t\t\t\t\tif (pending) state.callbacks.delete(pending);\n\t\t\t\t\t\tpending = undefined;\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\tstate.callbacks.add(pending);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** Cancel one subscription and remove the group's timer after its last user. */\n\t\t\tclose: () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tpending?.();\n\t\t\t\tstate.users--;\n\t\t\t\tif (state.users === 0) {\n\t\t\t\t\tclearInterval(state.timer);\n\t\t\t\t\tthis.groups.delete(unitName);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\t/** Wake pending callers and drop timers after the client is closed. */\n\tdispose(): void {\n\t\tthis.notify();\n\t\tfor (const group of this.groups.values()) clearInterval(group.timer);\n\t\tthis.groups.clear();\n\t}\n}\n","import * as diagnostics from './diagnostics';\nimport * as errors from './errors';\nimport * as waiting from './waiting';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** Fáze jedné mutation odděluje lokální validaci, neznámé doručení a potvrzené přijetí. */\nexport type MutationStage = 'before-submission' | 'submitted' | 'accepted';\n\n/** Lokální zdroj se při disconnectu odpojí bez změny manager-owned tasku. */\nexport interface LocalResource {\n\t/** Ukončí pouze lokální observation nebo jiný klientský handle. */\n\tdetach(): Promise<void>;\n}\n\n/** Výchozí celkový release budget zůstává nezávislý na per-request D-Bus timeoutu. */\nexport const defaultReleaseTimeoutMs = 5000;\n\n/** Doplní bezpečný task kontext a skutečný delivery outcome právě probíhající mutation. */\nexport function mutationError(error: unknown, operation: string, identity: types.TaskIdentity, stage: MutationStage): errors.TaskError {\n\tconst original = error instanceof errors.TaskError ? error : new errors.TaskError('RESULT_UNAVAILABLE', 'The task operation failed.', {}, error);\n\tconst localCancellation = original.code === 'WAIT_ABORTED' || original.code === 'WAIT_TIMEOUT';\n\tconst outcome = original.details.mutationOutcome ?? (stage === 'before-submission' ? 'not-submitted' : stage === 'accepted' ? 'accepted' : 'unknown');\n\tconst code = localCancellation && stage === 'submitted' ? 'UNKNOWN_MUTATION_OUTCOME' : original.code;\n\treturn new errors.TaskError(code, code === 'UNKNOWN_MUTATION_OUTCOME' ? 'The manager mutation outcome is unknown.' : original.message, { ...original.details, operation, taskId: identity.id, mutationOutcome: outcome }, original);\n}\n\n/** Zachová dříve potvrzené cleanup efekty i při chybě pozdějšího release kroku. */\nexport function releaseError(error: unknown, identity: types.TaskIdentity, stage: MutationStage, acceptedCleanupMutations: number): errors.TaskError {\n\tconst reported = mutationError(error, 'release', identity, stage);\n\tconst outcome = reported.details.mutationOutcome ?? 'not-submitted';\n\treturn new errors.TaskError(reported.code, reported.message, {\n\t\t...reported.details,\n\t\tmutationOutcome: acceptedCleanupMutations > 0 && outcome !== 'unknown' ? 'accepted' : outcome,\n\t\tacceptedCleanupMutations,\n\t}, reported);\n}\n\n/** Pouze explicitní manager absence je bezpečný idempotentní cleanup výsledek. */\nexport function isAbsence(error: unknown): boolean {\n\treturn error instanceof errors.TaskError && (error.details.reason === 'org.freedesktop.systemd1.NoSuchUnit' || error.details.reason === 'org.freedesktop.DBus.Error.UnknownObject');\n}\n\n/** Sdílené klientské vlastnictví transportu, read deduplikace, mutation front a observerů. */\nexport class ClientCore {\n\t/** Manager identity se po připojení nikdy tiše nezmění. */\n\treadonly manager: types.ManagerIdentity;\n\t/** Jediný D-Bus adapter používaný oběma topology codecy. */\n\treadonly transport: transport.Transport;\n\t/** Jediná redigovaná diagnostická pipeline spojení. */\n\treadonly diagnostics: diagnostics.Diagnostics;\n\t/** Sdílené systemd notifications a periodická reconciliation. */\n\treadonly hub = new waiting.ObservationHub();\n\t/** Současná čtení stejné topologie se sdílejí, settled hodnoty se necachují. */\n\tprivate readonly reads = new Map<string, Promise<readonly (transport.RawUnit | null)[]>>();\n\t/** Jedno lokální spojení nikdy neodešle stejný intent podruhé. */\n\tprivate readonly attempted = new Set<string>();\n\t/** Mutation stejné identity se řadí, různé tasky zůstávají nezávislé. */\n\tprivate readonly mutations = new Map<string, Promise<void>>();\n\t/** Živé output handles se při disconnectu odpojí před zavřením busu. */\n\tprivate readonly resources = new Set<LocalResource>();\n\t/** Transport listener patří přesně tomuto klientovi. */\n\tprivate readonly unsubscribe: () => void;\n\t/** Closed klient už nikdy neotevře nový transport ani observation. */\n\tprivate closed = false;\n\n\t/** Sváže oba topology codecy s jedním adaptérem a diagnostickým kontextem. */\n\tconstructor(adapter: transport.Transport, sink: diagnostics.Diagnostics) {\n\t\tthis.transport = adapter;\n\t\tthis.manager = adapter.identity;\n\t\tthis.diagnostics = sink;\n\t\tthis.unsubscribe = adapter.onChange(/** Směruje všechny relevantní unit změny do společného hubu. */ unitName => this.hub.notify(unitName));\n\t}\n\n\t/** Odmítne operaci před jakýmkoliv manager I/O, pokud už klient skončil. */\n\tassertOpen(): void {\n\t\tif (this.closed) throw new errors.TaskError('DISCONNECTED', 'The task client is disconnected.');\n\t\tthis.transport.assertOpen();\n\t}\n\n\t/** Odmítne lokální retry před manager I/O, sockety nebo otevřením aplikačních souborů. */\n\tassertUnattempted(identity: types.TaskIdentity): void {\n\t\tif (this.attempted.has(identity.id)) throw new errors.TaskError('START_REJECTED', 'This client has already submitted the intention.', { reason: 'intent-already-submitted', mutationOutcome: 'not-submitted' });\n\t}\n\n\t/** Zaregistruje skutečný submission až po úspěšném dokončení lokální přípravy. */\n\tmarkAttempt(identity: types.TaskIdentity): void {\n\t\tthis.assertUnattempted(identity);\n\t\tthis.attempted.add(identity.id);\n\t}\n\n\t/** Serializuje mutation jedné identity bez otrávení fronty předchozí chybou. */\n\tasync mutate<T>(identity: types.TaskIdentity, action: () => Promise<T>): Promise<T> {\n\t\tconst previous = this.mutations.get(identity.id) ?? Promise.resolve();\n\t\tconst result = previous.then(action);\n\t\tconst settled = result.then(/** Úspěch nesmí zablokovat další mutation. */ () => {}, /** Chyba nesmí zablokovat další mutation. */ () => {});\n\t\tthis.mutations.set(identity.id, settled);\n\t\ttry { return await result; }\n\t\tfinally { if (this.mutations.get(identity.id) === settled) this.mutations.delete(identity.id); }\n\t}\n\n\t/** Přečte celý topology snapshot souběžně a sdílí pouze právě probíhající request. */\n\tasync readUnits(identity: types.TaskIdentity, names: readonly string[]): Promise<readonly (transport.RawUnit | null)[]> {\n\t\tthis.assertOpen();\n\t\tconst key = `${identity.id}\\0${names.join('\\0')}`;\n\t\tconst existing = this.reads.get(key);\n\t\tif (existing) return await existing;\n\t\tconst read = Promise.all(names.map(/** Každé jméno se čte přes stejný bound manager. */ async name => await this.transport.readUnit(name)));\n\t\tthis.reads.set(key, read);\n\t\ttry { return await read; }\n\t\tfinally { if (this.reads.get(key) === read) this.reads.delete(key); }\n\t}\n\n\t/** Přidá lokální resource a vrátí idempotentní unregister pro jeho terminal settlement. */\n\tregister(resource: LocalResource): () => void {\n\t\tthis.assertOpen();\n\t\tthis.resources.add(resource);\n\t\treturn /** Uvolní pouze bookkeeping; resource už vlastní svůj terminal cleanup. */ () => { this.resources.delete(resource); };\n\t}\n\n\t/** Ukončí lokální handles před bus socketem, aniž by odeslal jediný StopUnit. */\n\tasync disconnect(): Promise<void> {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tconst resources = [...this.resources];\n\t\tthis.resources.clear();\n\t\tawait Promise.all(resources.map(/** Jedna chybná observation nesmí zabránit cleanupu ostatních. */ async resource => { try { await resource.detach(); } catch { /* Lokální detach je best effort a task pokračuje. */ } }));\n\t\tthis.transport.close();\n\t\tthis.unsubscribe();\n\t\tthis.hub.dispose();\n\t\tthis.reads.clear();\n\t\tthis.attempted.clear();\n\t\tthis.diagnostics.emit('connection.disconnected');\n\t\tthis.diagnostics.dispose();\n\t}\n}\n","import * as asyncHooks from 'node:async_hooks';\nimport type * as types from './types';\n\n/** One context-aware sink per client, isolated across concurrent asynchronous task flows. */\nexport class Diagnostics {\n\t/** Each operation inherits its own immutable identity context. */\n\tprivate readonly storage = new asyncHooks.AsyncLocalStorage<types.DiagnosticEvent['context']>();\n\t/** Connection context applies to events outside a task operation. */\n\tprivate readonly base: types.DiagnosticEvent['context'];\n\t/** The application controls delivery; the library never adds console output. */\n\tprivate readonly sink: types.ConnectOptions['onDiagnostic'];\n\t/** Pending asynchronous scopes retain correlation until their terminal callbacks finish. */\n\tprivate activeRuns = 0;\n\t/** Defer AsyncLocalStorage teardown until disconnected operations have reported their errors. */\n\tprivate disposeRequested = false;\n\n\t/** Bind all future events to the same connection scope and application sink. */\n\tconstructor(connectionId: string, sink?: types.ConnectOptions['onDiagnostic']) {\n\t\tthis.base = Object.freeze({ connection: Object.freeze({ id: connectionId }) });\n\t\tthis.sink = sink;\n\t}\n\n\t/** Establish task context once at the public operation boundary. */\n\tasync run<T>(identity: types.TaskIdentity, action: () => Promise<T>): Promise<T> {\n\t\tconst context = Object.freeze({ ...this.base, task: Object.freeze({ id: identity.id, unitName: identity.unitName }) });\n\t\tthis.activeRuns++;\n\t\ttry { return await this.storage.run(context, action); }\n\t\tfinally {\n\t\t\tthis.activeRuns--;\n\t\t\tif (this.disposeRequested && this.activeRuns === 0) this.storage.disable();\n\t\t}\n\t}\n\n\t/** Emit only predefined metadata, isolating application sink errors from task outcomes. */\n\temit(event: string, code?: types.ErrorCode): void {\n\t\tif (!this.sink) return;\n\t\tconst entry = Object.freeze({ event, context: this.storage.getStore() ?? this.base, ...(code === undefined ? {} : { code }) });\n\t\ttry {\n\t\t\tvoid Promise.resolve(this.sink(entry)).catch(/** Consume asynchronous observer failures without delaying task settlement. */ () => {});\n\t\t} catch { /* Observability must not change a mutation's outcome. */ }\n\t}\n\n\t/** Stop tracking local scopes after the client has disconnected. */\n\tdispose(): void {\n\t\tthis.disposeRequested = true;\n\t\tif (this.activeRuns === 0) this.storage.disable();\n\t}\n}\n","import * as fs from 'node:fs';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** Prepared descriptors stay alive until the transport settles the creation request. */\nexport interface OpenIO {\n\t/** Null maps to systemd's explicit null input or output mode. */\n\treadonly descriptors: Readonly<{\n\t\t/** Input source descriptor, or manager null mode. */\n\t\tstdin: number | null;\n\t\t/** Binary output descriptor, or manager null mode. */\n\t\tstdout: number | null;\n\t\t/** Binary error descriptor, or manager null mode. */\n\t\tstderr: number | null;\n\t}>;\n\t/** Idempotently close owned descriptors only; borrowed descriptors remain untouched. */\n\tclose(): void;\n}\n\n/** Compare actual opened objects, including aliases and hard links, without path guessing. */\nfunction fileIdentity(fd: number): string {\n\tconst stat = fs.fstatSync(fd, { bigint: true });\n\treturn `${stat.dev}:${stat.ino}`;\n}\n\n/** Open all files before truncation, coalescing shared output destinations into one offset. */\nexport function openIO(io: types.TaskIO): OpenIO {\n\tconst owned = new Set<number>();\n\tconst outputs = new Map<string, {\n\t\t/** First owned opening of this output inode. */\n\t\tfd: number;\n\t\t/** Aliases must agree with this original opening policy. */\n\t\tmode: 'append' | 'truncate';\n\t}>();\n\tlet inputIdentity: string | null = null;\n\n\t/** Remove ownership before closing so descriptor-number reuse cannot cause a second close. */\n\tfunction close(): void {\n\t\tfor (const fd of owned) {\n\t\t\towned.delete(fd);\n\t\t\ttry { fs.closeSync(fd); } catch { /* Never retry close: the descriptor number may already have been reused. */ }\n\t\t}\n\t}\n\n\t/** Open or borrow one channel without yet truncating any destination. */\n\tfunction open(channel: types.TaskInput | types.TaskOutput, output: boolean): number | null {\n\t\tif (channel.type === 'null') return null;\n\t\tif (channel.type === 'fd') {\n\t\t\tfs.fstatSync(channel.fd);\n\t\t\tif (!output) inputIdentity = fileIdentity(channel.fd);\n\t\t\treturn channel.fd;\n\t\t}\n\t\tconst mode = 'mode' in channel ? channel.mode : null;\n\t\tconst flags = fs.constants.O_NONBLOCK | (output ? fs.constants.O_WRONLY | fs.constants.O_CREAT | (mode === 'append' ? fs.constants.O_APPEND : 0) : fs.constants.O_RDONLY);\n\t\tconst fd = fs.openSync(channel.path, flags, 0o666);\n\t\towned.add(fd);\n\t\tif (!fs.fstatSync(fd).isFile()) throw new errors.TaskError('INVALID_INPUT', 'File I/O requires a regular file; use a borrowed descriptor for other objects.', { mutationOutcome: 'not-submitted', reason: 'non-regular-file' });\n\t\tconst identity = fileIdentity(fd);\n\t\tif (!output) {\n\t\t\tinputIdentity = identity;\n\t\t\treturn fd;\n\t\t}\n\t\tif (mode === null) throw new errors.TaskError('INVALID_INPUT', 'Output requires an explicit file mode.', { mutationOutcome: 'not-submitted', reason: 'output-mode' });\n\t\tconst previous = outputs.get(identity);\n\t\tif (previous) {\n\t\t\tif (previous.mode !== mode) throw new errors.TaskError('INVALID_INPUT', 'Shared output destinations have conflicting modes.', { mutationOutcome: 'not-submitted', reason: 'conflicting-output-modes' });\n\t\t\towned.delete(fd);\n\t\t\tfs.closeSync(fd);\n\t\t\treturn previous.fd;\n\t\t}\n\t\toutputs.set(identity, { fd, mode });\n\t\treturn fd;\n\t}\n\n\ttry {\n\t\t// Validate borrowed numbers before an owned open can accidentally reuse a closed number.\n\t\tfor (const channel of [io.stdin, io.stdout, io.stderr]) if (channel.type === 'fd') fs.fstatSync(channel.fd);\n\t\tconst stdin = open(io.stdin, false);\n\t\tconst stdout = open(io.stdout, true);\n\t\tconst stderr = open(io.stderr, true);\n\t\tfor (const [identity, output] of outputs) {\n\t\t\tif (output.mode === 'truncate' && identity === inputIdentity) throw new errors.TaskError('INVALID_INPUT', 'Truncating the input file is not supported.', { mutationOutcome: 'not-submitted', reason: 'input-output-alias' });\n\t\t}\n\t\tfor (const output of outputs.values()) if (output.mode === 'truncate') fs.ftruncateSync(output.fd, 0);\n\t\treturn { descriptors: Object.freeze({ stdin, stdout, stderr }), close };\n\t} catch (error) {\n\t\tclose();\n\t\tif (error instanceof errors.TaskError) throw error;\n\t\tconst code = errors.errorCode(error);\n\t\tthrow new errors.TaskError(code === 'EACCES' || code === 'EPERM' ? 'PERMISSION_DENIED' : 'INVALID_INPUT', 'Standard I/O could not be opened.', { mutationOutcome: 'not-submitted', reason: 'io-open-failed' }, error);\n\t}\n}\n","import * as crypto from 'node:crypto';\nimport * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport * as validation from './validation';\nimport type * as observedTypes from './observed-types';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** Build banner určuje packaged executable stejně jako u observed guardianu. */\ndeclare const __systemdTasksRuntimeDirectory: string;\n\n/** Zahrnuje bounded stdin po base64 i metadata; limit platí před manager submission. */\nexport const maximumBootstrapBytes = observedValidation.maximumObservedInputBytes * 2;\n\n/** Privátní finite vstup finalizeru bez závislosti na datech jeho konzumenta. */\nexport interface Bootstrap {\n\t/** Exact původní task, jehož běžící fázi finalizer nikdy nepřerušuje. */\n\treadonly reference: observedTypes.ObservedTaskReference;\n\t/** Budget dokončovací fáze, oddělený od neomezeného čekání na konec payloadu. */\n\treadonly timeoutMs: number;\n\t/** Normalizovaný konečný příkaz a jeho stdin bez dalšího task/journal protokolu. */\n\treadonly afterRelease: {\n\t\t/** Native command spuštěný bez shellu po release. */\n\t\treadonly spec: types.TaskSpec;\n\t\t/** Canonical finite stdin snapshot; null znamená /dev/null. */\n\t\treadonly stdinBase64: string | null;\n\t};\n}\n\n/** Vyžaduje kompletní invocation identitu ještě před registrací pomocného procesu. */\nfunction requireCompleteReference(value: unknown): observedTypes.ObservedTaskReference {\n\tconst reference = observedValidation.validateObservedReference(value);\n\tif (!reference.invocationId || !reference.retentionInvocationId || !reference.guardianInvocationId) {\n\t\tvalidation.invalid('finalization-reference-incomplete');\n\t}\n\treturn reference;\n}\n\n/** Kopíruje mutable vstupy, odmítne překlepy a zachová deterministickou registraci. */\nexport function prepare(reference: observedTypes.ObservedTaskReference, value: observedTypes.ObservedFinalizationOptions): Bootstrap {\n\tconst source = validation.record(value, 'finalization-options');\n\tvalidation.keys(source, ['afterRelease', 'timeoutMs'], 'finalization-option-keys');\n\treturn Object.freeze({\n\t\treference: requireCompleteReference(reference),\n\t\ttimeoutMs: validation.duration(source.timeoutMs, validation.maximumLocalTimeoutMs, 'finalization-timeout'),\n\t\tafterRelease: observedValidation.normalizeSpec(source.afterRelease),\n\t});\n}\n\n/** Revaliduje privátní JSON vstup stejnými command a stdin pravidly jako public observed API. */\nexport function parse(value: unknown): Bootstrap {\n\tconst source = validation.record(value, 'finalization-bootstrap');\n\tvalidation.keys(source, ['reference', 'timeoutMs', 'afterRelease'], 'finalization-bootstrap-keys');\n\tconst afterRelease = validation.record(source.afterRelease, 'finalization-after-release');\n\tvalidation.keys(afterRelease, ['spec', 'stdinBase64'], 'finalization-after-release-keys');\n\tconst spec = validation.validateSpec(afterRelease.spec);\n\tlet stdin: Buffer | null = null;\n\tif (afterRelease.stdinBase64 !== null) {\n\t\tconst encoded = validation.string(afterRelease.stdinBase64, 'finalization-stdin');\n\t\tif (encoded.length > 4 * Math.ceil(observedValidation.maximumObservedInputBytes / 3)) {\n\t\t\tvalidation.invalid('finalization-stdin-limit');\n\t\t}\n\t\tstdin = Buffer.from(encoded, 'base64');\n\t\tif (stdin.toString('base64') !== encoded) {\n\t\t\tvalidation.invalid('finalization-stdin-base64');\n\t\t}\n\t}\n\treturn prepare(requireCompleteReference(source.reference), {\n\t\ttimeoutMs: validation.duration(source.timeoutMs, validation.maximumLocalTimeoutMs, 'finalization-timeout'),\n\t\tafterRelease: { ...spec, stdin },\n\t});\n}\n\n/** Jméno je pevně odvozené od původního tasku; caller nemůže vybrat cizí jednotku. */\nexport function unitName(reference: observedTypes.ObservedTaskReference): string {\n\treturn reference.unitName.replace(/\\.service$/u, '-finalizer.service');\n}\n\n/** Marker váže reference i přesný callback, aniž by zveřejnil jeho argv, env nebo stdin. */\nfunction marker(bootstrap: Bootstrap): string {\n\tconst fingerprint = crypto.createHash('sha256').update(JSON.stringify(bootstrap)).digest('hex');\n\treturn `@primafuture/systemd-tasks:observed-finalizer:v1:${bootstrap.reference.id}:${fingerprint}`;\n}\n\n/** Kolize nebo neúspěšný finalizer nejsou potvrzené opakované přijetí. */\nexport function assertRegistered(bootstrap: Bootstrap, unit: transport.RawUnit): void {\n\tconst properties = unit.properties;\n\tif (properties.Transient !== true || properties.Description !== marker(bootstrap)\n\t\t|| properties.Type !== 'exec' || properties.ExitType !== 'main'\n\t\t|| properties.Restart !== 'no' || properties.KillMode !== 'control-group'\n\t\t|| properties.RemainAfterExit !== false || properties.CollectMode !== 'inactive-or-failed') {\n\t\tthrow new errors.TaskError('IDENTITY_CONFLICT', 'The finalizer is not the registered owned instance.', {\n\t\t\treason: 'finalizer-ownership', taskId: bootstrap.reference.id,\n\t\t});\n\t}\n\tif (properties.ActiveState === 'failed') {\n\t\tthrow new errors.TaskError('RESULT_UNAVAILABLE', 'The registered finalizer failed.', {\n\t\t\treason: 'finalizer-failed', taskId: bootstrap.reference.id,\n\t\t});\n\t}\n}\n\n/** Ověří packaged executable před jediným StartTransientUnit pokusem. */\nasync function executablePath(): Promise<string> {\n\tconst directory = typeof __systemdTasksRuntimeDirectory === 'string'\n\t\t? __systemdTasksRuntimeDirectory\n\t\t: path.resolve(process.cwd(), 'src');\n\tconst executable = path.basename(directory) === 'src'\n\t\t? path.resolve(directory, '..', 'dist', 'finalizer.mjs')\n\t\t: path.join(directory, 'finalizer.mjs');\n\ttry {\n\t\tconst stat = await fs.stat(executable);\n\t\tif (!stat.isFile()) {\n\t\t\tthrow new Error('Finalizer is not a regular file.');\n\t\t}\n\t\tawait fs.access(executable, fs.constants.R_OK);\n\t} catch (error) {\n\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The packaged finalizer is unavailable.', {\n\t\t\treason: 'finalizer-unavailable',\n\t\t}, error);\n\t}\n\treturn executable;\n}\n\n/** Samostatná přechodná jednotka nepřebírá lifetime, restart ani output původního tasku. */\nexport async function creationProperties(bootstrap: Bootstrap, inheritedEnvironment: readonly string[]): Promise<readonly transport.Property[]> {\n\tconst input = Buffer.from(JSON.stringify(bootstrap), 'utf8');\n\tif (input.byteLength > maximumBootstrapBytes) {\n\t\tvalidation.invalid('finalization-bootstrap-limit');\n\t}\n\tconst executable = await executablePath();\n\tconst properties = [\n\t\tsystemd.property('Description', 's', marker(bootstrap)),\n\t\tsystemd.property('Type', 's', 'exec'),\n\t\tsystemd.property('ExitType', 's', 'main'),\n\t\tsystemd.property('Restart', 's', 'no'),\n\t\tsystemd.property('RemainAfterExit', 'b', false),\n\t\tsystemd.property('CollectMode', 's', 'inactive-or-failed'),\n\t\tsystemd.property('KillMode', 's', 'control-group'),\n\t\tsystemd.property('TimeoutStopUSec', 't', BigInt(bootstrap.afterRelease.spec.stopGraceMs) * 1000n),\n\t\tsystemd.property('RuntimeMaxUSec', 't', systemd.infinityUsec),\n\t\tsystemd.property('WorkingDirectory', 's', '/'),\n\t\tsystemd.property('Environment', 'as', []),\n\t\tsystemd.property('UnsetEnvironment', 'as', systemd.unsetEnvironment(inheritedEnvironment)),\n\t\tsystemd.property('ExecStartEx', 'a(sasas)', [[process.execPath, [process.execPath, executable], ['no-env-expand']]]),\n\t\tsystemd.property('StandardInput', 's', 'data'),\n\t\tsystemd.property('StandardInputData', 'ay', input),\n\t\tsystemd.property('StandardOutput', 's', 'null'),\n\t\tsystemd.property('StandardError', 's', 'journal'),\n\t];\n\tfor (const resource of bootstrap.afterRelease.spec.systemdProperties ?? []) {\n\t\tproperties.push(systemd.property(resource.name, resource.signature, BigInt(resource.value)));\n\t}\n\treturn Object.freeze(properties);\n}\n","import * as crypto from 'node:crypto';\nimport * as validation from './validation';\nimport type * as observedTypes from './observed-types';\nimport type * as types from './types';\n\n/** Konzervativní strop se vejde i po base64 serializaci do systemd manager state řádku. */\nexport const maximumObservedInputBytes = 512 * 1024;\n\n/** Nejdelší canonical base64 reprezentace povoleného stdin, kontrolovaná před alokací Bufferu. */\nconst maximumObservedInputBase64Characters = 4 * Math.ceil(maximumObservedInputBytes / 3);\n\n/** Samostatný namespace brání kolizi se základními dvoujednotkovými tasky. */\nconst observedUnitPrefix = 'pf-systemd-tasks-observed-';\n\n/** Exact identity klíče zajišťují, že uložený intent nemůže nést skryté policy rozšíření. */\nconst observedIdentityKeys = [\n\t'kind', 'version', 'protocolVersion', 'id', 'unitName', 'retentionUnitName',\n\t'guardianUnitName', 'managerScope', 'fingerprint',\n];\n\n/** Normalizuje příkaz a konečný stdin snapshot bez otevření busu nebo descriptoru. */\nexport function normalizeSpec(value: unknown): { readonly spec: types.TaskSpec; readonly stdinBase64: string | null } {\n\tconst source = validation.record(value, 'observed-spec-object');\n\tvalidation.keys(source, ['executable', 'argv', 'cwd', 'env', 'runtimeLimitMs', 'stopGraceMs', 'systemdProperties', 'stdin'], 'observed-spec-keys');\n\tconst spec = validation.validateSpec({\n\t\texecutable: source.executable,\n\t\targv: source.argv,\n\t\tcwd: source.cwd,\n\t\tenv: source.env,\n\t\truntimeLimitMs: source.runtimeLimitMs,\n\t\tstopGraceMs: source.stopGraceMs,\n\t\t...(source.systemdProperties === undefined ? {} : { systemdProperties: source.systemdProperties }),\n\t});\n\tif (source.stdin === null) return Object.freeze({ spec, stdinBase64: null });\n\tlet bytes: Buffer;\n\tif (typeof source.stdin === 'string') bytes = Buffer.from(source.stdin, 'utf8');\n\telse if (source.stdin instanceof Uint8Array) bytes = Buffer.from(source.stdin);\n\telse return validation.invalid('observed-stdin');\n\tif (bytes.byteLength > maximumObservedInputBytes) validation.invalid('observed-stdin-limit');\n\treturn Object.freeze({ spec, stdinBase64: bytes.toString('base64') });\n}\n\n/** Hash zahrnuje přesný canonical stdin vedle normalizovaného execution kontraktu. */\nfunction fingerprint(spec: types.TaskSpec, stdinBase64: string | null): string {\n\treturn crypto.createHash('sha256').update(JSON.stringify({ spec, stdinBase64 })).digest('hex');\n}\n\n/** Připraví úplný observed intent lokálně a zkopíruje mutable Uint8Array vstup. */\nexport function prepareObserved(spec: observedTypes.ObservedTaskSpec): observedTypes.ObservedTaskIntent {\n\tconst normalized = normalizeSpec(spec);\n\tconst id = crypto.randomUUID();\n\treturn Object.freeze({\n\t\tkind: 'observed', version: 1, protocolVersion: 1, id,\n\t\tunitName: `${observedUnitPrefix}${id}.service`,\n\t\tretentionUnitName: `${observedUnitPrefix}${id}-retention.service`,\n\t\tguardianUnitName: `${observedUnitPrefix}${id}-guardian.service`,\n\t\tmanagerScope: 'user', fingerprint: fingerprint(normalized.spec, normalized.stdinBase64),\n\t\tspec: normalized.spec, stdinBase64: normalized.stdinBase64,\n\t});\n}\n\n/** Ověří odvozená jména a verzovaný identity kontrakt bez důvěry v JSON vstup. */\nfunction identity(source: Record<string, unknown>): observedTypes.ObservedTaskIdentity {\n\tif (source.kind !== 'observed' || source.version !== 1 || source.protocolVersion !== 1 || source.managerScope !== 'user') validation.invalid('observed-identity-version-or-scope');\n\tconst id = validation.uuid(source.id, 'observed-identity-id');\n\tif (source.unitName !== `${observedUnitPrefix}${id}.service`\n\t\t|| source.retentionUnitName !== `${observedUnitPrefix}${id}-retention.service`\n\t\t|| source.guardianUnitName !== `${observedUnitPrefix}${id}-guardian.service`) validation.invalid('observed-identity-unit-name');\n\treturn Object.freeze({\n\t\tkind: 'observed', version: 1, protocolVersion: 1, id,\n\t\tunitName: source.unitName as string,\n\t\tretentionUnitName: source.retentionUnitName as string,\n\t\tguardianUnitName: source.guardianUnitName as string,\n\t\tmanagerScope: 'user', fingerprint: validation.digest(source.fingerprint, 'observed-identity-fingerprint'),\n\t});\n}\n\n/** Ověří canonical base64 v uloženém intentu a vynutí stejný raw stdin limit. */\nfunction validateStdinBase64(value: unknown): string | null {\n\tif (value === null) return null;\n\tconst encoded = validation.string(value, 'observed-stdin-base64');\n\tif (encoded.length > maximumObservedInputBase64Characters || encoded.length % 4 !== 0) validation.invalid('observed-stdin-base64');\n\tconst bytes = Buffer.from(encoded, 'base64');\n\tif (bytes.byteLength > maximumObservedInputBytes || bytes.toString('base64') !== encoded) validation.invalid('observed-stdin-base64');\n\treturn encoded;\n}\n\n/** Revaliduje uložený observed intent a detekuje změnu příkazu nebo stdin. */\nexport function validateObservedIntent(value: unknown): observedTypes.ObservedTaskIntent {\n\tconst source = validation.record(value, 'observed-intent-object');\n\tvalidation.keys(source, [...observedIdentityKeys, 'spec', 'stdinBase64'], 'observed-intent-keys');\n\tconst checkedIdentity = identity(source);\n\tconst spec = validation.validateSpec(source.spec);\n\tconst stdinBase64 = validateStdinBase64(source.stdinBase64);\n\tif (fingerprint(spec, stdinBase64) !== checkedIdentity.fingerprint) validation.invalid('observed-intent-fingerprint-mismatch');\n\treturn Object.freeze({ ...checkedIdentity, spec, stdinBase64 });\n}\n\n/** Ověří exact reference včetně explicitně chybějící guardian invocation evidence. */\nexport function validateObservedReference(value: unknown): observedTypes.ObservedTaskReference {\n\tconst source = validation.record(value, 'observed-reference-object');\n\tvalidation.keys(source, [...observedIdentityKeys, 'manager', 'invocationId', 'retentionInvocationId', 'guardianInvocationId'], 'observed-reference-keys');\n\treturn Object.freeze({\n\t\t...identity(source), manager: validation.validateManagerIdentity(source.manager),\n\t\tinvocationId: validation.validateInvocationId(source.invocationId),\n\t\tretentionInvocationId: validation.validateInvocationId(source.retentionInvocationId),\n\t\tguardianInvocationId: validation.validateInvocationId(source.guardianInvocationId),\n\t});\n}\n\n/** Rozliší persisted intent od exact reference bez načítání command dat do diagnostiky. */\nexport function validateObservedTarget(value: unknown): observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference {\n\tconst source = validation.record(value, 'observed-target-object');\n\treturn 'spec' in source ? validateObservedIntent(source) : validateObservedReference(source);\n}\n\n/** Levný discriminator směruje společné client metody ještě před plnou validací. */\nexport function isObservedValue(value: unknown): boolean {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value) && 'kind' in value && value.kind === 'observed';\n}\n\n/** Vrátí pouze ne-citlivou identitu vhodnou do receiptů a not-found výsledků. */\nexport function identityOnly(value: observedTypes.ObservedTaskIdentity): observedTypes.ObservedTaskIdentity {\n\treturn Object.freeze({\n\t\tkind: 'observed', version: 1, protocolVersion: 1, id: value.id,\n\t\tunitName: value.unitName, retentionUnitName: value.retentionUnitName,\n\t\tguardianUnitName: value.guardianUnitName, managerScope: 'user', fingerprint: value.fingerprint,\n\t});\n}\n\n/** Vytvoří ne-citlivý ownership marker pro jednu roli observed topologie. */\nexport function marker(value: observedTypes.ObservedTaskIdentity, role: 'task' | 'retention' | 'guardian'): string {\n\treturn `@primafuture/systemd-tasks:observed:v1:${value.id}:${value.fingerprint}:${role}`;\n}\n\n/** Dekóduje již validovaný stdin snapshot těsně před sestavením manager properties. */\nexport function stdinBytes(intent: observedTypes.ObservedTaskIntent): Buffer | null {\n\treturn intent.stdinBase64 === null ? null : Buffer.from(intent.stdinBase64, 'base64');\n}\n","import * as crypto from 'node:crypto';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** Canonical task namespace; a caller cannot supply arbitrary service names. */\nconst unitPrefix = 'pf-systemd-tasks-';\n/** Maximum JavaScript timer delay without Node's overflow-to-one-millisecond behavior. */\nexport const maximumLocalTimeoutMs = 2_147_483_647;\n/** Upper bound that preserves exact millisecond input and uint64 microsecond conversion. */\nconst maximumDurationMs = Number.MAX_SAFE_INTEGER;\n/** Exact keys of serialized ownership evidence, shared by intentions and references. */\nconst identityKeys = ['version', 'id', 'unitName', 'retentionUnitName', 'managerScope', 'fingerprint'];\n\n/** Report validation errors without copying the offending value into the error. */\nexport function invalid(reason: string): never {\n\tthrow new errors.TaskError('INVALID_INPUT', 'The task request is invalid.', { reason, mutationOutcome: 'not-submitted' });\n}\n\n/** Require a plain data object, including JSON objects with a null prototype. */\nexport function record(value: unknown, reason: string): Record<string, unknown> {\n\tif (value === null || typeof value !== 'object' || Array.isArray(value)) invalid(reason);\n\tconst prototype: unknown = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) invalid(reason);\n\treturn value as Record<string, unknown>;\n}\n\n/** Catch misspellings and unsupported extensions before any I/O or D-Bus mutation. */\nexport function keys(value: Record<string, unknown>, allowed: readonly string[], reason: string): void {\n\tif (Object.keys(value).some(/** Reject keys outside the explicit contract allowlist. */ key => !allowed.includes(key)) || Object.getOwnPropertySymbols(value).length > 0) invalid(reason);\n}\n\n/** D-Bus strings cannot contain NUL; all other characters remain literal. */\nexport function string(value: unknown, reason: string): string {\n\tif (typeof value !== 'string' || value.includes('\\0')) invalid(reason);\n\tfor (const character of value) {\n\t\tconst code = character.codePointAt(0)!;\n\t\tif (code >= 0xd800 && code <= 0xdfff) invalid(reason);\n\t}\n\treturn value;\n}\n\n/** Validate absolute Linux paths without changing symlink-sensitive path semantics. */\nexport function absolutePath(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!path.posix.isAbsolute(result)) invalid(reason);\n\treturn result;\n}\n\n/** Keep zero distinct from unlimited: zero timers are rejected instead of disabling limits. */\nexport function duration(value: unknown, maximum: number, reason: string): number {\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0 || value > maximum) invalid(reason);\n\treturn value;\n}\n\n/** Normalize and copy public command data into a deterministic JSON representation. */\nexport function validateSpec(value: unknown): types.TaskSpec {\n\tconst source = record(value, 'spec-object');\n\tkeys(source, ['executable', 'argv', 'cwd', 'env', 'runtimeLimitMs', 'stopGraceMs', 'systemdProperties'], 'spec-keys');\n\tconst executable = absolutePath(source.executable, 'executable-path');\n\tconst cwd = absolutePath(source.cwd, 'cwd-path');\n\tif (!Array.isArray(source.argv)) invalid('argv-array');\n\tconst argv = Object.freeze(source.argv.map(/** Validate literal arguments without shell expansion or coercion. */ value => string(value, 'argv-string')));\n\tconst environment = record(source.env, 'environment-object');\n\tconst env: Record<string, string> = Object.create(null) as Record<string, string>;\n\tfor (const key of Object.keys(environment).sort()) {\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) invalid('environment-name');\n\t\tenv[key] = string(environment[key], 'environment-value');\n\t}\n\tconst runtimeLimitMs = source.runtimeLimitMs === null ? null : duration(source.runtimeLimitMs, maximumDurationMs, 'runtime-limit');\n\tconst stopGraceMs = duration(source.stopGraceMs, maximumDurationMs, 'stop-grace');\n\tconst properties: types.SystemdProperty[] = [];\n\tif (source.systemdProperties !== undefined) {\n\t\tif (!Array.isArray(source.systemdProperties)) invalid('properties-array');\n\t\tconst names = new Set<string>();\n\t\tfor (const value of source.systemdProperties) {\n\t\t\tconst property = record(value, 'property-object');\n\t\t\tkeys(property, ['name', 'signature', 'value'], 'property-keys');\n\t\t\tif (property.name !== 'CPUWeight' && property.name !== 'IOWeight') invalid('reserved-or-unsupported-property');\n\t\t\tif (property.signature !== 't') invalid('property-signature');\n\t\t\tif (names.has(property.name)) invalid('duplicate-property');\n\t\t\tnames.add(property.name);\n\t\t\tproperties.push(Object.freeze({ name: property.name, signature: 't', value: duration(property.value, 10000, 'property-value') }));\n\t\t}\n\t}\n\tproperties.sort(/** Canonicalize resource ordering for a stable specification fingerprint. */ (left, right) => left.name.localeCompare(right.name));\n\treturn Object.freeze({ executable, argv, cwd, env: Object.freeze(env), runtimeLimitMs, stopGraceMs, systemdProperties: Object.freeze(properties) });\n}\n\n/** Hash normalized command data without exposing that data in unit descriptions. */\nexport function specFingerprint(spec: types.TaskSpec): string {\n\treturn crypto.createHash('sha256').update(JSON.stringify(spec)).digest('hex');\n}\n\n/** Ověří canonical random UUID používané ve všech odvozených názvech jednotek. */\nexport function uuid(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(result)) invalid(reason);\n\treturn result;\n}\n\n/** Ověří lowercase SHA-256 bez zveřejnění původních fingerprintovaných dat. */\nexport function digest(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!/^[0-9a-f]{64}$/.test(result)) invalid(reason);\n\treturn result;\n}\n\n/** Prepare an intention locally; no connection, file opening, or process start occurs. */\nexport function prepare(spec: types.TaskSpec): types.TaskIntent {\n\tconst normalized = validateSpec(spec);\n\tconst id = crypto.randomUUID();\n\treturn Object.freeze({ version: 1, id, unitName: `${unitPrefix}${id}.service`, retentionUnitName: `${unitPrefix}${id}-retention.service`, managerScope: 'user', fingerprint: specFingerprint(normalized), spec: normalized });\n}\n\n/** Validate derived names and a versioned identity without trusting serialized input. */\nfunction identity(source: Record<string, unknown>): types.TaskIdentity {\n\tif (source.version !== 1 || source.managerScope !== 'user') invalid('identity-version-or-scope');\n\tconst id = uuid(source.id, 'identity-id');\n\tif (source.unitName !== `${unitPrefix}${id}.service` || source.retentionUnitName !== `${unitPrefix}${id}-retention.service`) invalid('identity-unit-name');\n\tconst fingerprint = digest(source.fingerprint, 'identity-fingerprint');\n\treturn Object.freeze({ version: 1, id, unitName: source.unitName as string, retentionUnitName: source.retentionUnitName as string, managerScope: 'user', fingerprint });\n}\n\n/** Revalidate stored intentions and detect changes to their command configuration. */\nexport function validateIntent(value: unknown): types.TaskIntent {\n\tconst source = record(value, 'intent-object');\n\tkeys(source, [...identityKeys, 'spec'], 'intent-keys');\n\tconst validatedIdentity = identity(source);\n\tconst spec = validateSpec(source.spec);\n\tif (specFingerprint(spec) !== validatedIdentity.fingerprint) invalid('intent-fingerprint-mismatch');\n\treturn Object.freeze({ ...validatedIdentity, spec });\n}\n\n/** Null explicitly records missing invocation evidence; present IDs have exact wire length. */\nexport function validateInvocationId(value: unknown): string | null {\n\tif (value === null) return null;\n\tconst result = string(value, 'invocation-id');\n\tif (!/^[0-9a-f]{32}$/.test(result)) invalid('invocation-id');\n\treturn result;\n}\n\n/** Validate the persisted manager binding without contacting another manager. */\nexport function validateManagerIdentity(value: unknown): types.ManagerIdentity {\n\tconst source = record(value, 'manager-identity');\n\tkeys(source, ['scope', 'uid', 'machineId', 'bootId', 'busId', 'owner'], 'manager-keys');\n\tif (source.scope !== 'user' || typeof source.uid !== 'number' || !Number.isSafeInteger(source.uid) || source.uid < 0) invalid('manager-scope-or-uid');\n\tconst machineId = string(source.machineId, 'machine-id');\n\tconst busId = string(source.busId, 'bus-id');\n\tconst bootId = string(source.bootId, 'boot-id');\n\tconst owner = string(source.owner, 'manager-owner');\n\tif (!/^[0-9a-f]{32}$/.test(machineId) || !/^[0-9a-f]{32}$/.test(busId)) invalid('manager-identifiers');\n\tif (!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(bootId) || !/^:[0-9]+\\.[0-9]+$/.test(owner)) invalid('manager-identifiers');\n\treturn Object.freeze({ scope: 'user', uid: source.uid, machineId, bootId, busId, owner });\n}\n\n/** Reference validation preserves absent evidence rather than silently upgrading it. */\nexport function validateReference(value: unknown): types.TaskReference {\n\tconst source = record(value, 'reference-object');\n\tkeys(source, [...identityKeys, 'manager', 'invocationId', 'retentionInvocationId'], 'reference-keys');\n\treturn Object.freeze({ ...identity(source), manager: validateManagerIdentity(source.manager), invocationId: validateInvocationId(source.invocationId), retentionInvocationId: validateInvocationId(source.retentionInvocationId) });\n}\n\n/** Distinguish an intention from an exact observed reference at API boundaries. */\nexport function validateTarget(value: unknown): types.TaskIntent | types.TaskReference {\n\tconst source = record(value, 'target-object');\n\treturn 'spec' in source ? validateIntent(source) : validateReference(source);\n}\n\n/** Copy only ownership fields when returning receipts or diagnostics. */\nexport function identityOnly(value: types.TaskIdentity): types.TaskIdentity {\n\treturn Object.freeze({ version: value.version, id: value.id, unitName: value.unitName, retentionUnitName: value.retentionUnitName, managerScope: value.managerScope, fingerprint: value.fingerprint });\n}\n\n/** Produce a non-secret ownership marker shared by creation and later lookup. */\nexport function marker(value: types.TaskIdentity, role: 'task' | 'retention'): string {\n\treturn `@primafuture/systemd-tasks:v1:${value.id}:${value.fingerprint}:${role}`;\n}\n\n/** Validate one explicit standard descriptor without opening files. */\nfunction channel(value: unknown, output: boolean): types.TaskInput | types.TaskOutput {\n\tconst source = record(value, 'io-channel');\n\tif (source.type === 'null') {\n\t\tkeys(source, ['type'], 'null-io-keys');\n\t\treturn Object.freeze({ type: 'null' });\n\t}\n\tif (source.type === 'fd') {\n\t\tkeys(source, ['type', 'fd'], 'fd-io-keys');\n\t\tif (typeof source.fd !== 'number' || !Number.isInteger(source.fd) || source.fd < 0 || source.fd > 2_147_483_647) invalid('file-descriptor');\n\t\treturn Object.freeze({ type: 'fd', fd: source.fd });\n\t}\n\tif (source.type === 'file') {\n\t\tkeys(source, output ? ['type', 'path', 'mode'] : ['type', 'path'], 'file-io-keys');\n\t\tconst filePath = absolutePath(source.path, 'io-file-path');\n\t\tif (!output) return Object.freeze({ type: 'file', path: filePath });\n\t\tif (source.mode !== 'append' && source.mode !== 'truncate') invalid('output-mode');\n\t\treturn Object.freeze({ type: 'file', path: filePath, mode: source.mode });\n\t}\n\treturn invalid('io-type');\n}\n\n/** Validate every channel, including obvious shared-path conflicts, before any I/O. */\nexport function validateIO(value: unknown): types.TaskIO {\n\tconst source = record(value, 'io-object');\n\tkeys(source, ['stdin', 'stdout', 'stderr'], 'io-keys');\n\tconst stdin = channel(source.stdin, false) as types.TaskInput;\n\tconst stdout = channel(source.stdout, true) as types.TaskOutput;\n\tconst stderr = channel(source.stderr, true) as types.TaskOutput;\n\tif (stdout.type === 'file' && stderr.type === 'file' && stdout.path === stderr.path && stdout.mode !== stderr.mode) invalid('conflicting-output-modes');\n\treturn Object.freeze({ stdin, stdout, stderr });\n}\n\n/** Validate local cancellation before subscription or mutation starts. */\nexport function validateWaitOptions(value: unknown = {}, stop = false): types.StopOptions {\n\tconst source = record(value, 'wait-options');\n\tkeys(source, stop ? ['signal', 'timeoutMs', 'wait'] : ['signal', 'timeoutMs'], 'wait-option-keys');\n\tif (source.signal !== undefined && !(source.signal instanceof AbortSignal)) invalid('abort-signal');\n\tif (source.wait !== undefined && typeof source.wait !== 'boolean') invalid('stop-wait');\n\treturn {\n\t\t...(source.signal === undefined ? {} : { signal: source.signal as AbortSignal }),\n\t\t...(source.timeoutMs === undefined ? {} : { timeoutMs: duration(source.timeoutMs, maximumLocalTimeoutMs, 'wait-timeout') }),\n\t\t...(source.wait === undefined ? {} : { wait: source.wait as boolean }),\n\t};\n}\n\n/** Validate connection controls without contacting systemd or loading native sockets. */\nexport function validateConnectOptions(value: unknown = {}): Required<Pick<types.ConnectOptions, 'requestTimeoutMs'>> & Pick<types.ConnectOptions, 'onDiagnostic'> {\n\tconst source = record(value, 'connect-options');\n\tkeys(source, ['requestTimeoutMs', 'onDiagnostic'], 'connect-option-keys');\n\tif (source.onDiagnostic !== undefined && typeof source.onDiagnostic !== 'function') invalid('diagnostic-sink');\n\treturn {\n\t\trequestTimeoutMs: source.requestTimeoutMs === undefined ? 5000 : duration(source.requestTimeoutMs, maximumLocalTimeoutMs, 'request-timeout'),\n\t\t...(source.onDiagnostic === undefined ? {} : { onDiagnostic: source.onDiagnostic as (event: types.DiagnosticEvent) => void }),\n\t};\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport * as validation from './validation';\nimport type * as io from './io';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** A single read of each member of the task's owned retention pair. */\nexport interface UnitPair {\n\t/** Main service, or explicit absence from a reachable manager. */\n\treadonly task: transport.RawUnit | null;\n\t/** Auxiliary retention service, or explicit absence. */\n\treadonly retention: transport.RawUnit | null;\n}\n\n/** The minimal property set needed to create the task and its retention dependency. */\nexport interface CreationProperties {\n\t/** User command, lifecycle policy, and explicit I/O. */\n\treadonly task: readonly transport.Property[];\n\t/** Process-free active record after its initialization command exits. */\n\treadonly retention: readonly transport.Property[];\n}\n\n/** Procesní evidence jedné služby před zabalením do topology-specific snapshotu. */\nexport interface ServiceSnapshot {\n\t/** Main PID je diagnostický údaj, nikoliv instance identity. */\n\treadonly mainPid: number;\n\t/** Terminální manager state nezahrnuje jednotku s čekajícím jobem. */\n\treadonly managerTerminal: boolean;\n\t/** Cgroup cleanup této konkrétní služby. */\n\treadonly cleanup: types.CleanupState;\n\t/** Klasifikovaný exit, pokud už existuje dostatek manager evidence. */\n\treadonly result: types.TaskResult | null;\n\t/** Raw auditní subset použitý pro klasifikaci. */\n\treadonly evidence: types.TaskEvidence;\n}\n\n/** systemd uses uint64 all-ones to represent an explicitly infinite timeout. */\nexport const infinityUsec = 18_446_744_073_709_551_615n;\n/** V1 runs a single standard utility to activate retention without a resident helper. */\nconst retentionExecutable = '/usr/bin/true';\n\n/** Reject a missing internal prerequisite before any task can receive a misleading start receipt. */\nexport async function assertRetentionAvailable(): Promise<void> {\n\ttry {\n\t\tconst executable = await fs.stat(retentionExecutable);\n\t\tif (!executable.isFile()) throw new Error('The retention executable is not a regular file.');\n\t\tawait fs.access(retentionExecutable, fs.constants.X_OK);\n\t} catch (error) {\n\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The retention service requires an executable /usr/bin/true.', { reason: 'retention-executable-unavailable' }, error);\n\t}\n}\n\n/** Keep wire signatures and values adjacent at the systemd mapping boundary. */\nexport function property(name: string, signature: string, value: unknown): transport.Property {\n\treturn { name, signature, value };\n}\n\n/** Odvodí názvy manager environment proměnných, které explicitní spec nepřebírá. */\nexport function unsetEnvironment(managerEnvironment: readonly string[], preserved: Readonly<Record<string, string>> = {}): readonly string[] {\n\tconst names = managerEnvironment.map(/** Oddělí a ověří jméno bez kopírování hodnoty do chyb nebo diagnostiky. */ entry => {\n\t\tconst separator = entry.indexOf('=');\n\t\tconst name = separator > 0 ? entry.slice(0, separator) : '';\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager environment is invalid.', { reason: 'invalid-manager-environment' });\n\t\treturn name;\n\t});\n\treturn [...new Set(names)]\n\t\t.filter(/** Explicitně nastavená hodnota nahrazuje manager variantu a nesmí být následně unsetnuta. */ name => !Object.hasOwn(preserved, name));\n}\n\n/** Sestaví bezprocesní retention službu pro libovolný topology codec. */\nexport function retentionProperties(description: string, beforeUnitName: string): readonly transport.Property[] {\n\treturn [\n\t\tproperty('Description', 's', description),\n\t\tproperty('Type', 's', 'oneshot'), property('RemainAfterExit', 'b', true),\n\t\tproperty('Restart', 's', 'no'), property('StopWhenUnneeded', 'b', false),\n\t\tproperty('Before', 'as', [beforeUnitName]),\n\t\tproperty('ExecStart', 'a(sasb)', [[retentionExecutable, [retentionExecutable], false]]),\n\t\tproperty('StandardInput', 's', 'null'), property('StandardOutput', 's', 'null'), property('StandardError', 's', 'null'),\n\t];\n}\n\n/** Translate a validated intention; the existing D-Bus transport handles the wire protocol. */\nexport function creationProperties(intent: types.TaskIntent, opened: io.OpenIO, managerEnvironment: readonly string[]): CreationProperties {\n\tconst spec = intent.spec;\n\tconst unset = unsetEnvironment(managerEnvironment, spec.env);\n\tconst task = [\n\t\tproperty('Description', 's', validation.marker(intent, 'task')),\n\t\tproperty('Type', 's', 'exec'), property('ExitType', 's', 'main'),\n\t\tproperty('Restart', 's', 'no'), property('RemainAfterExit', 'b', false),\n\t\tproperty('KillMode', 's', 'control-group'), property('KillSignal', 'i', 15),\n\t\tproperty('FinalKillSignal', 'i', 9), property('SendSIGKILL', 'b', true),\n\t\tproperty('TimeoutStopUSec', 't', BigInt(spec.stopGraceMs) * 1000n),\n\t\tproperty('TimeoutStopFailureMode', 's', 'kill'),\n\t\tproperty('RuntimeMaxUSec', 't', spec.runtimeLimitMs === null ? infinityUsec : BigInt(spec.runtimeLimitMs) * 1000n),\n\t\tproperty('WorkingDirectory', 's', spec.cwd),\n\t\tproperty('Environment', 'as', Object.entries(spec.env).map(/** Encode explicit environment entries in systemd assignment form. */ ([name, value]) => `${name}=${value}`)),\n\t\tproperty('UnsetEnvironment', 'as', unset),\n\t\tproperty('ExecStartEx', 'a(sasas)', [[spec.executable, [spec.executable, ...spec.argv], ['no-env-expand']]]),\n\t\tproperty('Requires', 'as', [intent.retentionUnitName]), property('After', 'as', [intent.retentionUnitName]),\n\t];\n\tfor (const [channel, descriptor] of Object.entries(opened.descriptors)) {\n\t\tconst name = channel === 'stdin' ? 'StandardInput' : channel === 'stdout' ? 'StandardOutput' : 'StandardError';\n\t\ttask.push(descriptor === null ? property(name, 's', 'null') : property(`${name}FileDescriptor`, 'h', descriptor));\n\t}\n\tfor (const resource of spec.systemdProperties ?? []) task.push(property(resource.name, resource.signature, BigInt(resource.value)));\n\tconst retention = retentionProperties(validation.marker(intent, 'retention'), intent.unitName);\n\treturn { task, retention };\n}\n\n/** Refuse stale manager bindings before looking up or controlling a name. */\nexport function assertManager(expected: types.ManagerIdentity, actual: types.ManagerIdentity): void {\n\tfor (const key of ['scope', 'uid', 'machineId', 'bootId', 'busId', 'owner'] as const) {\n\t\tif (expected[key] !== actual[key]) throw new errors.TaskError('IDENTITY_CONFLICT', 'The reference belongs to a different manager.', { reason: 'manager-identity' });\n\t}\n}\n\n/** Read a required manager scalar, failing explicitly instead of inventing default evidence. */\nfunction string(properties: Readonly<Record<string, unknown>>, key: string): string {\n\tconst value = properties[key];\n\tif (typeof value !== 'string') throw new errors.TaskError('RESULT_UNAVAILABLE', 'Required manager evidence is unavailable.', { reason: 'invalid-manager-properties' });\n\treturn value;\n}\n\n/** Validate integer evidence before using it as an exit status, PID, or job identity. */\nfunction integer(properties: Readonly<Record<string, unknown>>, key: string): number {\n\tconst value = properties[key];\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) throw new errors.TaskError('RESULT_UNAVAILABLE', 'Required numeric manager evidence is unavailable.', { reason: 'invalid-manager-properties' });\n\treturn value;\n}\n\n/** Preserve exact uint64 timestamps in JSON-friendly decimal form. */\nfunction timestamp(properties: Readonly<Record<string, unknown>>, key: string): string {\n\tconst value = properties[key];\n\tif (typeof value === 'bigint' && value >= 0n) return value.toString();\n\tif (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) return String(value);\n\tthrow new errors.TaskError('RESULT_UNAVAILABLE', 'Required timestamp evidence is unavailable.', { reason: 'invalid-manager-properties' });\n}\n\n/** Normalize the manager's byte-array ID; absence never becomes an invented UUID. */\nexport function invocation(unit: transport.RawUnit | null): string | null {\n\tif (unit === null) return null;\n\tconst value = unit.properties.InvocationID;\n\tif (!(value instanceof Uint8Array) || (value.byteLength !== 0 && value.byteLength !== 16)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'Invocation identity is unavailable.', { reason: 'invalid-invocation-id' });\n\treturn value.byteLength === 0 ? null : Buffer.from(value).toString('hex');\n}\n\n/** Confirm the recorded dependency relationship instead of trusting a service name alone. */\nfunction includes(properties: Readonly<Record<string, unknown>>, key: string, name: string): boolean {\n\tconst value = properties[key];\n\treturn Array.isArray(value) && value.includes(name);\n}\n\n/** Guard against adopting a colliding unit or a changed lifecycle policy. */\nexport function assertOwnership(identity: types.TaskIdentity, pair: UnitPair): void {\n\tconst main = pair.task?.properties;\n\tconst keeper = pair.retention?.properties;\n\tconst invalidMain = main && (main.Transient !== true || main.Description !== validation.marker(identity, 'task') || main.Type !== 'exec' || main.ExitType !== 'main' || main.Restart !== 'no' || main.KillMode !== 'control-group' || main.RemainAfterExit !== false || !includes(main, 'Requires', identity.retentionUnitName) || !includes(main, 'After', identity.retentionUnitName));\n\tconst invalidKeeper = keeper && (keeper.Transient !== true || keeper.Description !== validation.marker(identity, 'retention') || keeper.Type !== 'oneshot' || keeper.RemainAfterExit !== true || keeper.Restart !== 'no' || !includes(keeper, 'Before', identity.unitName));\n\tif (invalidMain || invalidKeeper) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit is not the expected owned task instance.', { reason: 'unit-ownership', taskId: identity.id });\n}\n\n/** Compare every known reference field exactly; null evidence is not permission to adopt a later run. */\nexport function assertReference(reference: types.TaskReference, pair: UnitPair): void {\n\tif ((pair.task && invocation(pair.task) !== reference.invocationId) || (pair.retention && invocation(pair.retention) !== reference.retentionInvocationId)) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit invocation no longer matches the reference.', { reason: 'invocation-mismatch', taskId: reference.id });\n}\n\n/** Build serializable instance evidence independently of the manager property payload. */\nexport function reference(identity: types.TaskIdentity, manager: types.ManagerIdentity, pair: UnitPair): types.TaskReference {\n\treturn Object.freeze({ ...validation.identityOnly(identity), manager, invocationId: invocation(pair.task), retentionInvocationId: invocation(pair.retention) });\n}\n\n/** A pending job prevents an inactive service from being classified as a finished task. */\nexport function jobId(unit: transport.RawUnit): number {\n\tconst value = unit.properties.Job;\n\tif (!Array.isArray(value) || typeof value[0] !== 'number' || !Number.isSafeInteger(value[0]) || value[0] < 0) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager job state is unavailable.', { reason: 'invalid-job-state' });\n\treturn value[0];\n}\n\n/** Terminal manager state alone is insufficient; cgroup population is checked separately. */\nexport function managerTerminal(unit: transport.RawUnit): boolean {\n\treturn ['inactive', 'failed'].includes(string(unit.properties, 'ActiveState')) && jobId(unit) === 0;\n}\n\n/** Read hierarchical population, avoiding direct PID identity or a main-PID-only cleanup claim. */\nexport async function cgroupPopulation(controlGroup: string): Promise<boolean | null> {\n\tif (controlGroup === '') return false;\n\tif (!controlGroup.startsWith('/') || controlGroup.includes('\\0') || path.posix.normalize(controlGroup) !== controlGroup) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an invalid cgroup path.', { reason: 'invalid-cgroup-path' });\n\ttry {\n\t\tconst contents = await fs.readFile(`/sys/fs/cgroup${controlGroup}/cgroup.events`, 'utf8');\n\t\tconst value = contents.match(/^populated ([01])$/m)?.[1];\n\t\treturn value === undefined ? null : value === '1';\n\t} catch (error) {\n\t\tif (errors.errorCode(error) === 'ENOENT') return false;\n\t\treturn null;\n\t}\n}\n\n/** Klasifikuje jednu process-bearing službu bez znalosti její role v topologii. */\nexport async function serviceSnapshot(unit: transport.RawUnit, readPopulation: (controlGroup: string) => Promise<boolean | null> = cgroupPopulation): Promise<ServiceSnapshot> {\n\tconst properties = unit.properties;\n\tconst terminal = managerTerminal(unit);\n\tconst activeState = string(properties, 'ActiveState');\n\tconst controlGroup = string(properties, 'ControlGroup');\n\tconst populated = terminal ? await readPopulation(controlGroup) : null;\n\tconst cleanup: types.CleanupState = !terminal ? 'pending' : populated === false ? 'complete' : populated === true ? 'incomplete' : 'unknown';\n\tconst code = integer(properties, 'ExecMainCode');\n\tconst status = integer(properties, 'ExecMainStatus');\n\tconst enteredActive = timestamp(properties, 'ActiveEnterTimestampMonotonic');\n\tconst started = timestamp(properties, 'ExecMainStartTimestampMonotonic');\n\tconst evidence: types.TaskEvidence = Object.freeze({\n\t\tactiveState, subState: string(properties, 'SubState'), systemdResult: string(properties, 'Result'),\n\t\texecMainCode: code, execMainStatus: status,\n\t\texecMainStartUsec: started, execMainExitUsec: timestamp(properties, 'ExecMainExitTimestampMonotonic'),\n\t\tactiveEnterUsec: enteredActive, jobId: jobId(unit), controlGroup, cgroupPopulated: populated,\n\t});\n\tlet result: types.TaskResult | null = null;\n\tif (code !== 0 || terminal) {\n\t\tconst kind: types.TaskResult['kind'] = code === 1 ? (enteredActive === '0' ? 'execution-failed' : 'exited') : code === 2 || code === 3 ? 'signaled' : started === '0' && enteredActive === '0' ? 'not-executed' : 'unknown';\n\t\tresult = Object.freeze({ kind, exitCode: code === 1 ? status : null, signal: code === 2 || code === 3 ? status : null, execution: enteredActive === '0' ? 'not-confirmed' : 'confirmed', systemdResult: evidence.systemdResult, cleanup });\n\t}\n\treturn Object.freeze({ mainPid: integer(properties, 'MainPID'), managerTerminal: terminal, cleanup, result, evidence });\n}\n\n/** Derive truthful status from manager evidence, retaining ambiguity in cause and cleanup. */\nexport async function snapshot(identity: types.TaskIdentity, manager: types.ManagerIdentity, pair: UnitPair, readPopulation: (controlGroup: string) => Promise<boolean | null> = cgroupPopulation): Promise<types.TaskSnapshot> {\n\tif (!pair.task) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task unit was not found.', { reason: 'unit-not-found', taskId: identity.id });\n\tconst captured = reference(identity, manager, pair);\n\tconst process = await serviceSnapshot(pair.task, readPopulation);\n\tconst phase: types.TaskSnapshot['phase'] = process.managerTerminal && process.cleanup === 'complete' ? 'completed'\n\t\t: process.managerTerminal || process.evidence.activeState === 'deactivating' || process.evidence.execMainCode !== 0 ? 'cleaning'\n\t\t\t: process.evidence.activeState === 'active' ? 'running' : 'starting';\n\treturn Object.freeze({ reference: captured, identity: captured.invocationId && captured.retentionInvocationId ? 'complete' : 'incomplete', phase, ...process });\n}\n","/** Čtyřbytový magic odděluje guardian stream od náhodného nebo staršího protokolu. */\nexport const magic = Buffer.from('SDTO', 'ascii');\n/** První veřejně implementovaná verze interního guardian protokolu. */\nexport const version = 1;\n/** Fixní hlavička obsahuje magic, verzi, kind a uint32be délku. */\nexport const headerBytes = 10;\n/** Jeden payload frame je bounded nezávisle na Node stream high-water marku. */\nexport const maximumPayloadBytes = 64 * 1024;\n\n/** Wire hodnoty jsou stabilní a nesmějí záviset na pořadí TypeScript enumu. */\nexport const kind = Object.freeze({ ready: 1, stdout: 2, stderr: 3, complete: 4 } as const);\n\n/** Zakóduje jeden již bounded frame pro guardian write frontu. */\nexport function encode(frameKind: number, payload: Uint8Array = new Uint8Array()): Buffer {\n\tif (!Object.values(kind).includes(frameKind as 1 | 2 | 3 | 4) || payload.byteLength > maximumPayloadBytes) throw new Error('Invalid observed guardian frame.');\n\tconst frame = Buffer.allocUnsafe(headerBytes + payload.byteLength);\n\tmagic.copy(frame, 0);\n\tframe[4] = version;\n\tframe[5] = frameKind;\n\tframe.writeUInt32BE(payload.byteLength, 6);\n\tframe.set(payload, headerBytes);\n\treturn frame;\n}\n","import * as errors from './errors';\nimport * as framing from './observed-framing';\nimport type * as clientCore from './client-core';\nimport type * as observedTypes from './observed-types';\nimport type * as fdx from 'usocket';\n\n/** Adoptovaný socket používá bounded buffering i při pomalém async callbacku. */\nconst receiveBudgetBytes = 256 * 1024;\n\n/** Minimální native kontrakt odděluje resource algoritmus od lazy načtení addonu. */\nexport interface SocketRuntime {\n\t/** Vytvoří jeden pár explicitně vlastněných Unix stream endpointů. */\n\treadonly socketPair: typeof fdx.socketPair;\n\t/** Převezme jeden endpoint do bounded asynchronního socketu. */\n\treadonly adoptSocket: typeof fdx.adoptSocket;\n}\n\n/** Endpointy, které musí zůstat otevřené do settlementu StartTransientUnit. */\nexport interface PreparedObservedSockets {\n\t/** Raw čísla pouze pro interní D-Bus property mapper, nikdy pro veřejného callera. */\n\treadonly descriptors: {\n\t\t/** Payload stdout endpoint. */\n\t\treadonly taskStdout: number;\n\t\t/** Guardian stdout endpoint. */\n\t\treadonly guardianStdout: number;\n\t\t/** Payload stderr endpoint. */\n\t\treadonly taskStderr: number;\n\t\t/** Guardian stderr endpoint. */\n\t\treadonly guardianStderr: number;\n\t\t/** Guardian framed-output endpoint. */\n\t\treadonly guardianObserver: number;\n\t};\n\t/** Lokální observation nad adoptovaným peer endpointem. */\n\treadonly observation: OutputObservation;\n\t/** Zavře manager-submission wrappers až po definitivním settlementu D-Bus requestu. */\n\tcloseSubmitted(): void;\n}\n\n/** Přeloží native/protocol chybu do redigované stabilní veřejné kategorie. */\nfunction observationError(error: unknown, reason = 'observer-transport'): errors.TaskError {\n\tif (error instanceof errors.TaskError) return error;\n\tconst code = errors.errorCode(error);\n\tif (code === 'ERR_FDX_PLATFORM' || code === 'ERR_FDX_ABI' || code === 'ERR_FDX_BINARY_MISSING') {\n\t\treturn new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The installed Unix socket transport does not support observed tasks.', { reason: code }, error);\n\t}\n\treturn new errors.TaskError('OBSERVATION_FAILED', 'The observed output connection failed.', { reason }, error);\n}\n\n/** Jediný dekódovaný frame; payload je nová stabilní kopie. */\ninterface Frame {\n\t/** Číselný wire kind ověřený vůči známé verzi. */\n\treadonly kind: 1 | 2 | 3 | 4;\n\t/** Přesný payload bez header storage. */\n\treadonly payload: Buffer;\n}\n\n/** Lokální observation state machine bez reconnectu, replay nebo manager mutací. */\nexport class OutputObservation implements observedTypes.ObservedTaskObservation, clientCore.LocalResource {\n\t/** Veřejný terminal promise zůstává stejný pro všechny callery. */\n\treadonly completion: Promise<{ readonly outcome: 'complete' | 'detached' }>;\n\t/** Settluje public completion nezávisle na případně visícím application callbacku. */\n\tprivate completionResolve!: (outcome: { readonly outcome: 'complete' | 'detached' }) => void;\n\t/** Propaguje jedinou redigovanou observation chybu do public completion. */\n\tprivate completionReject!: (error: errors.TaskError) => void;\n\t/** Package-owned bounded socket po úspěšné adopci. */\n\tprivate readonly socket: fdx.Socket;\n\t/** Callback se volá sekvenčně a jeho promise je skutečný backpressure. */\n\tprivate readonly onOutput: observedTypes.ObservedStartOptions['onOutput'];\n\t/** Odstraní handle ze společného client bookkeeping po libovolném settlementu. */\n\tprivate readonly onTerminal: () => void;\n\t/** Start čeká na jediný validní ready frame odděleně od celého output lifecycle. */\n\tprivate readonly ready: Promise<void>;\n\t/** Settluje readiness právě jednou. */\n\tprivate readyResolve!: () => void;\n\t/** Propaguje pre-ready protocol nebo detach chybu do startObserved. */\n\tprivate readyReject!: (error: unknown) => void;\n\t/** Brání dvojímu settlementu readiness promise. */\n\tprivate readySettled = false;\n\t/** Explicitní public detach se hlásí jako úspěšný lokální outcome. */\n\tprivate detached = false;\n\t/** Interní start/protocol chyba má přednost před destroy error z native socketu. */\n\tprivate forcedFailure: errors.TaskError | undefined;\n\t/** Terminal observation ignoruje pozdější detach nebo abort. */\n\tprivate terminal = false;\n\n\t/** Spustí pull pump okamžitě, aby guardian readiness nemohla uváznout na bufferu. */\n\tconstructor(socket: fdx.Socket, onOutput: observedTypes.ObservedStartOptions['onOutput'], onTerminal: () => void) {\n\t\tthis.socket = socket;\n\t\tthis.onOutput = onOutput;\n\t\tthis.onTerminal = onTerminal;\n\t\tthis.ready = new Promise<void>(/** Uchová jednorázové readiness settlement funkce. */ (resolve, reject) => { this.readyResolve = resolve; this.readyReject = reject; });\n\t\tvoid this.ready.catch(/** Interní readiness může selhat dřív, než start boundary připojí waiter. */ () => {});\n\t\tthis.completion = new Promise(/** Lokální detach nesmí čekat na settlement cizího callback promise. */ (resolve, reject) => { this.completionResolve = resolve; this.completionReject = reject; });\n\t\tvoid this.completion.catch(/** Caller smí completion připojit později bez unhandled-rejection závodu. */ () => {});\n\t\tvoid this.pump();\n\t}\n\n\t/** Přečte exact frame a odmítne neznámou verzi, ancillary FD i oversized payload. */\n\tprivate async readFrame(): Promise<Frame | null> {\n\t\tconst header = await this.socket.read({ bytes: framing.headerBytes, fdCount: 0 });\n\t\tif (header === null) return null;\n\t\tif (this.socket.stats.bufferedReceiveFds !== 0 || !header.data.subarray(0, 4).equals(framing.magic)\n\t\t\t|| header.data[4] !== framing.version) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent an invalid protocol header.', { reason: 'guardian-frame-header' });\n\t\tconst frameKind = header.data[5];\n\t\tif (!Object.values(framing.kind).includes(frameKind as 1 | 2 | 3 | 4)) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent an unknown frame kind.', { reason: 'guardian-frame-kind' });\n\t\tconst length = header.data.readUInt32BE(6);\n\t\tif (length > framing.maximumPayloadBytes) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian frame exceeds the protocol limit.', { reason: 'guardian-frame-limit' });\n\t\tconst payload = length === 0 ? Buffer.alloc(0) : (await this.socket.read({ bytes: length, fdCount: 0 }))?.data;\n\t\tif (!payload || this.socket.stats.bufferedReceiveFds !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian stream ended inside a frame.', { reason: 'guardian-frame-truncated' });\n\t\treturn Object.freeze({ kind: frameKind as 1 | 2 | 3 | 4, payload: Buffer.from(payload) });\n\t}\n\n\t/** Settluje readiness jen jednou a zachová původní chybu pro start boundary. */\n\tprivate settleReady(error?: errors.TaskError): void {\n\t\tif (this.readySettled) return;\n\t\tthis.readySettled = true;\n\t\tif (error) this.readyReject(error);\n\t\telse this.readyResolve();\n\t}\n\n\t/** Settluje public observation a client bookkeeping právě jednou. */\n\tprivate settleCompletion(outcome: { readonly outcome: 'complete' | 'detached' } | undefined, error?: errors.TaskError): void {\n\t\tif (this.terminal) return;\n\t\tthis.terminal = true;\n\t\tif (error) this.completionReject(error);\n\t\telse this.completionResolve(outcome!);\n\t\ttry { this.onTerminal(); } catch { /* Interní bookkeeping nesmí přepsat observation outcome. */ }\n\t}\n\n\t/** Vynutí ready→data*→complete→EOF pořadí a sekvenční callback backpressure. */\n\tprivate async pump(): Promise<void> {\n\t\ttry {\n\t\t\tconst ready = await this.readFrame();\n\t\t\tif (ready === null || ready.kind !== framing.kind.ready || ready.payload.byteLength !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian did not begin with an empty ready frame.', { reason: 'guardian-ready-order' });\n\t\t\tthis.settleReady();\n\t\t\tfor (;;) {\n\t\t\t\tconst frame = await this.readFrame();\n\t\t\t\tif (frame === null) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian ended before the complete frame.', { reason: 'guardian-unexpected-eof' });\n\t\t\t\tif (frame.kind === framing.kind.ready) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian repeated its ready frame.', { reason: 'guardian-frame-order' });\n\t\t\t\tif (frame.kind === framing.kind.complete) {\n\t\t\t\t\tif (frame.payload.byteLength !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian complete frame carried data.', { reason: 'guardian-frame-order' });\n\t\t\t\t\tconst trailing = await this.socket.read({ bytes: 1, fdCount: 0 });\n\t\t\t\t\tif (trailing !== null || this.socket.stats.bufferedReceiveFds !== 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent trailing protocol data.', { reason: 'guardian-trailing-data' });\n\t\t\t\t\tthis.socket.destroy();\n\t\t\t\t\tthis.settleCompletion(Object.freeze({ outcome: 'complete' }));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ((frame.kind !== framing.kind.stdout && frame.kind !== framing.kind.stderr) || frame.payload.byteLength === 0) throw new errors.TaskError('OBSERVATION_FAILED', 'The guardian sent an invalid output frame.', { reason: 'guardian-frame-order' });\n\t\t\t\ttry {\n\t\t\t\t\tawait this.onOutput(Object.freeze({ stream: frame.kind === framing.kind.stdout ? 'stdout' : 'stderr', data: Buffer.from(frame.payload) }));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new errors.TaskError('OBSERVATION_FAILED', 'The observed output callback failed.', { reason: 'output-callback' }, error);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (this.detached && !this.forcedFailure) return;\n\t\t\tconst reported = this.forcedFailure ?? observationError(error);\n\t\t\tthis.settleReady(reported);\n\t\t\tthis.socket.destroy();\n\t\t\tthis.settleCompletion(undefined, reported);\n\t\t}\n\t}\n\n\t/** Čeká na readiness v pevném budgetu a timeout převádí na terminal observation failure. */\n\tasync waitReady(timeoutMs: number): Promise<void> {\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst timeout = new Promise<never>(/** Readiness timeout není task runtime timeout ani stop request. */ (_resolve, reject) => {\n\t\t\ttimer = setTimeout(/** Odpojí jen lokální peer; přijatý guardian přejde do drain režimu. */ () => reject(new errors.TaskError('OBSERVATION_FAILED', 'The guardian readiness deadline expired.', { reason: 'guardian-readiness-timeout' })), timeoutMs);\n\t\t});\n\t\ttry { await Promise.race([this.ready, timeout]); }\n\t\tcatch (error) {\n\t\t\tconst reported = observationError(error, 'guardian-readiness');\n\t\t\tawait this.abort(reported);\n\t\t\tthrow reported;\n\t\t} finally { clearTimeout(timer); }\n\t}\n\n\t/** Interní start chyba ukončí observation jako failure, nikoliv user-requested detach. */\n\tasync abort(error: errors.TaskError): Promise<void> {\n\t\tif (this.terminal) return;\n\t\tthis.forcedFailure = error;\n\t\tthis.settleReady(error);\n\t\tthis.socket.destroy();\n\t\tthis.settleCompletion(undefined, error);\n\t}\n\n\t/** Explicitní detach zavře lokální socket bez čekání na případně visící application callback. */\n\tasync detach(): Promise<void> {\n\t\tif (this.terminal) return;\n\t\tthis.detached = true;\n\t\tthis.settleReady(new errors.TaskError('OBSERVATION_FAILED', 'The output observation detached before guardian readiness.', { reason: 'detached-before-ready' }));\n\t\tthis.socket.destroy();\n\t\tthis.settleCompletion(Object.freeze({ outcome: 'detached' }));\n\t}\n}\n\n/** Načte native socket runtime až při skutečném startu, nikoliv při importu veřejné fasády. */\nasync function loadFdx(): Promise<typeof import('usocket')> {\n\treturn await import('usocket');\n}\n\n/** Připraví socket topology a každý získaný pár okamžitě zahrne do rollback evidence. */\nexport function prepareSocketsWithRuntime(socketFdx: SocketRuntime, options: observedTypes.ObservedStartOptions, onTerminal: () => void): PreparedObservedSockets {\n\tconst owned: fdx.OwnedDescriptor[] = [];\n\tlet adopted: fdx.Socket | undefined;\n\ttry {\n\t\tconst stdout = socketFdx.socketPair();\n\t\towned.push(...stdout);\n\t\tconst stderr = socketFdx.socketPair();\n\t\towned.push(...stderr);\n\t\tconst observer = socketFdx.socketPair();\n\t\towned.push(...observer);\n\t\tadopted = socketFdx.adoptSocket({ descriptor: observer[0], limits: { receiveBytes: receiveBudgetBytes, receiveFds: 1, readOperations: 2 } });\n\t\tconst observation = new OutputObservation(adopted, options.onOutput, onTerminal);\n\t\tlet closed = false;\n\t\treturn Object.freeze({\n\t\t\tdescriptors: Object.freeze({\n\t\t\t\ttaskStdout: stdout[0].fd, guardianStdout: stdout[1].fd,\n\t\t\t\ttaskStderr: stderr[0].fd, guardianStderr: stderr[1].fd,\n\t\t\t\tguardianObserver: observer[1].fd,\n\t\t\t}),\n\t\t\tobservation,\n\t\t\tcloseSubmitted: () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tfor (const descriptor of owned) descriptor.close();\n\t\t\t},\n\t\t});\n\t} catch (error) {\n\t\tadopted?.destroy();\n\t\tfor (const descriptor of owned) descriptor.close();\n\t\tthrow observationError(error, 'socket-setup');\n\t}\n}\n\n/** Vytvoří sockety až po lazy načtení přesně jedné canonical native dependency instance. */\nexport async function prepareSockets(options: observedTypes.ObservedStartOptions, onTerminal: () => void): Promise<PreparedObservedSockets> {\n\treturn prepareSocketsWithRuntime(await loadFdx(), options, onTerminal);\n}\n\n/** Ověří strict start options dřív, než vznikne jediný socket nebo D-Bus efekt. */\nexport function validateStartOptions(value: unknown): observedTypes.ObservedStartOptions {\n\tif (typeof value !== 'object' || value === null || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype) throw new errors.TaskError('INVALID_INPUT', 'The observed start options are invalid.', { reason: 'observed-start-options', mutationOutcome: 'not-submitted' });\n\tconst source = value as Record<string, unknown>;\n\tif (Object.keys(source).length !== 1 || typeof source.onOutput !== 'function' || Object.getOwnPropertySymbols(source).length !== 0) throw new errors.TaskError('INVALID_INPUT', 'The observed start options are invalid.', { reason: 'observed-start-options', mutationOutcome: 'not-submitted' });\n\treturn Object.freeze({ onOutput: source.onOutput as observedTypes.ObservedStartOptions['onOutput'] });\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport type * as observedTypes from './observed-types';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** Build banner nastavuje fyzický dist adresář; source-condition testy používají projektový fallback. */\ndeclare const __systemdTasksRuntimeDirectory: string;\n\n/** Jedno konzistentní čtení všech tří rolí observed topologie. */\nexport interface ObservedUnitSet {\n\t/** Uživatelský payload, nebo explicitní absence. */\n\treadonly task: transport.RawUnit | null;\n\t/** Bezprocesní retention záznam, nebo explicitní absence. */\n\treadonly retention: transport.RawUnit | null;\n\t/** Output guardian, nebo explicitní absence. */\n\treadonly guardian: transport.RawUnit | null;\n}\n\n/** Package-owned socket endpointy předané manageru v jediné start transakci. */\nexport interface ObservedDescriptors {\n\t/** Write endpoint payload stdout. */\n\treadonly taskStdout: number;\n\t/** Read endpoint guardian stdout vstupu. */\n\treadonly guardianStdout: number;\n\t/** Write endpoint payload stderr. */\n\treadonly taskStderr: number;\n\t/** Read endpoint guardian stderr vstupu. */\n\treadonly guardianStderr: number;\n\t/** Guardian endpoint jednosměrného framed spojení ke klientovi. */\n\treadonly guardianObserver: number;\n}\n\n/** Všechny properties atomické tříjednotkové transakce. */\nexport interface ObservedCreationProperties {\n\t/** Payload execution a jeho dependency policy. */\n\treadonly task: readonly transport.Property[];\n\t/** Retention záznam držící výsledek po skončení procesů. */\n\treadonly retention: readonly transport.Property[];\n\t/** Notify guardian vlastnící drain a framing. */\n\treadonly guardian: readonly transport.Property[];\n}\n\n/** Readiness je interně bounded bez dalšího veřejného timeout knobu. */\nexport const guardianReadinessTimeoutMs = 5000;\n\n/** Najde přibalený guardian stejně z ESM, CommonJS i source-condition testů. */\nexport function guardianPath(): string {\n\tconst directory = typeof __systemdTasksRuntimeDirectory === 'string' ? __systemdTasksRuntimeDirectory : path.resolve(process.cwd(), 'src');\n\treturn path.basename(directory) === 'src' ? path.resolve(directory, '..', 'dist', 'guardian.mjs') : path.join(directory, 'guardian.mjs');\n}\n\n/** Ověří všechny interní executable před otevřením observed spojení. */\nexport async function assertObservedAvailable(): Promise<void> {\n\tawait systemd.assertRetentionAvailable();\n\tfor (const executable of [process.execPath, '/usr/bin/systemd-notify', '/usr/bin/systemctl']) {\n\t\ttry {\n\t\t\tconst stat = await fs.stat(executable);\n\t\t\tif (!stat.isFile()) throw new Error('Internal executable is not a regular file.');\n\t\t\tawait fs.access(executable, fs.constants.X_OK);\n\t\t} catch (error) {\n\t\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Observed tasks require their internal executables.', { reason: 'observed-executable-unavailable' }, error);\n\t\t}\n\t}\n\ttry {\n\t\tconst stat = await fs.stat(guardianPath());\n\t\tif (!stat.isFile()) throw new Error('Packaged guardian is not a regular file.');\n\t\tawait fs.access(guardianPath(), fs.constants.R_OK);\n\t} catch (error) {\n\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The packaged observed-task guardian is unavailable.', { reason: 'guardian-unavailable' }, error);\n\t}\n}\n\n/** Přeloží validovaný intent a socket endpointy do jedné manager transakce. */\nexport function creationProperties(intent: observedTypes.ObservedTaskIntent, descriptors: ObservedDescriptors, managerEnvironment: readonly string[]): ObservedCreationProperties {\n\tconst spec = intent.spec;\n\tconst task = [\n\t\tsystemd.property('Description', 's', observedValidation.marker(intent, 'task')),\n\t\tsystemd.property('Type', 's', 'exec'), systemd.property('ExitType', 's', 'main'),\n\t\tsystemd.property('Restart', 's', 'no'), systemd.property('RemainAfterExit', 'b', false),\n\t\tsystemd.property('KillMode', 's', 'control-group'), systemd.property('KillSignal', 'i', 15),\n\t\tsystemd.property('FinalKillSignal', 'i', 9), systemd.property('SendSIGKILL', 'b', true),\n\t\tsystemd.property('TimeoutStopUSec', 't', BigInt(spec.stopGraceMs) * 1000n),\n\t\tsystemd.property('TimeoutStopFailureMode', 's', 'kill'),\n\t\tsystemd.property('RuntimeMaxUSec', 't', spec.runtimeLimitMs === null ? systemd.infinityUsec : BigInt(spec.runtimeLimitMs) * 1000n),\n\t\tsystemd.property('WorkingDirectory', 's', spec.cwd),\n\t\tsystemd.property('Environment', 'as', Object.entries(spec.env).map(/** Zachová explicitní byte-for-byte assignment hodnoty. */ ([name, value]) => `${name}=${value}`)),\n\t\tsystemd.property('UnsetEnvironment', 'as', systemd.unsetEnvironment(managerEnvironment, spec.env)),\n\t\tsystemd.property('ExecStartEx', 'a(sasas)', [[spec.executable, [spec.executable, ...spec.argv], ['no-env-expand']]]),\n\t\tsystemd.property('Requires', 'as', [intent.retentionUnitName]),\n\t\tsystemd.property('BindsTo', 'as', [intent.guardianUnitName]),\n\t\tsystemd.property('PropagatesStopTo', 'as', [intent.guardianUnitName]),\n\t\tsystemd.property('After', 'as', [intent.retentionUnitName, intent.guardianUnitName]),\n\t\tsystemd.property('StandardOutputFileDescriptor', 'h', descriptors.taskStdout),\n\t\tsystemd.property('StandardErrorFileDescriptor', 'h', descriptors.taskStderr),\n\t];\n\tconst input = observedValidation.stdinBytes(intent);\n\tif (input === null) task.push(systemd.property('StandardInput', 's', 'null'));\n\telse {\n\t\ttask.push(systemd.property('StandardInput', 's', 'data'));\n\t\ttask.push(systemd.property('StandardInputData', 'ay', input));\n\t}\n\tfor (const resource of spec.systemdProperties ?? []) task.push(systemd.property(resource.name, resource.signature, BigInt(resource.value)));\n\tconst guardian = [\n\t\tsystemd.property('Description', 's', observedValidation.marker(intent, 'guardian')),\n\t\tsystemd.property('Type', 's', 'notify'), systemd.property('NotifyAccess', 's', 'all'),\n\t\tsystemd.property('Restart', 's', 'no'), systemd.property('RemainAfterExit', 'b', false),\n\t\tsystemd.property('KillMode', 's', 'control-group'), systemd.property('KillSignal', 'i', 15),\n\t\tsystemd.property('FinalKillSignal', 'i', 9), systemd.property('SendSIGKILL', 'b', true),\n\t\tsystemd.property('TimeoutStartUSec', 't', BigInt(guardianReadinessTimeoutMs) * 1000n),\n\t\tsystemd.property('TimeoutStopUSec', 't', systemd.infinityUsec),\n\t\tsystemd.property('WorkingDirectory', 's', '/'),\n\t\tsystemd.property('Environment', 'as', []),\n\t\tsystemd.property('UnsetEnvironment', 'as', systemd.unsetEnvironment(managerEnvironment)),\n\t\tsystemd.property('ExecStartEx', 'a(sasas)', [[process.execPath, [process.execPath, guardianPath(), intent.unitName], ['no-env-expand']]]),\n\t\tsystemd.property('ExtraFileDescriptors', 'a(hs)', [\n\t\t\t[descriptors.guardianStdout, 'task-stdout'],\n\t\t\t[descriptors.guardianStderr, 'task-stderr'],\n\t\t\t[descriptors.guardianObserver, 'observer'],\n\t\t]),\n\t\tsystemd.property('StandardInput', 's', 'null'), systemd.property('StandardOutput', 's', 'null'), systemd.property('StandardError', 's', 'null'),\n\t\tsystemd.property('Requires', 'as', [intent.retentionUnitName]),\n\t\tsystemd.property('After', 'as', [intent.retentionUnitName]),\n\t\tsystemd.property('Before', 'as', [intent.unitName]),\n\t];\n\treturn Object.freeze({\n\t\ttask: Object.freeze(task),\n\t\tretention: Object.freeze(systemd.retentionProperties(observedValidation.marker(intent, 'retention'), intent.unitName)),\n\t\tguardian: Object.freeze(guardian),\n\t});\n}\n\n/** Ověří dependency vztah bez spoléhání na samotné jméno jednotky. */\nfunction includes(properties: Readonly<Record<string, unknown>>, key: string, name: string): boolean {\n\tconst value = properties[key];\n\treturn Array.isArray(value) && value.includes(name);\n}\n\n/** Odmítne kolizi nebo změněnou lifecycle policy kterékoliv ze tří jednotek. */\nexport function assertOwnership(identity: observedTypes.ObservedTaskIdentity, units: ObservedUnitSet): void {\n\tconst task = units.task?.properties;\n\tconst retention = units.retention?.properties;\n\tconst guardian = units.guardian?.properties;\n\tconst invalidTask = task && (task.Transient !== true || task.Description !== observedValidation.marker(identity, 'task')\n\t\t|| task.Type !== 'exec' || task.ExitType !== 'main' || task.Restart !== 'no' || task.KillMode !== 'control-group'\n\t\t|| task.RemainAfterExit !== false || !includes(task, 'Requires', identity.retentionUnitName)\n\t\t|| !includes(task, 'BindsTo', identity.guardianUnitName) || !includes(task, 'After', identity.retentionUnitName)\n\t\t|| !includes(task, 'After', identity.guardianUnitName) || !includes(task, 'PropagatesStopTo', identity.guardianUnitName));\n\tconst invalidRetention = retention && (retention.Transient !== true || retention.Description !== observedValidation.marker(identity, 'retention')\n\t\t|| retention.Type !== 'oneshot' || retention.RemainAfterExit !== true || retention.Restart !== 'no'\n\t\t|| !includes(retention, 'Before', identity.unitName));\n\tconst invalidGuardian = guardian && (guardian.Transient !== true || guardian.Description !== observedValidation.marker(identity, 'guardian')\n\t\t|| guardian.Type !== 'notify' || guardian.NotifyAccess !== 'all' || guardian.Restart !== 'no'\n\t\t|| guardian.KillMode !== 'control-group' || guardian.RemainAfterExit !== false\n\t\t|| !includes(guardian, 'Requires', identity.retentionUnitName) || !includes(guardian, 'After', identity.retentionUnitName)\n\t\t|| !includes(guardian, 'Before', identity.unitName));\n\tif (invalidTask || invalidRetention || invalidGuardian) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit is not the expected owned observed task instance.', { reason: 'unit-ownership', taskId: identity.id });\n}\n\n/** Null invocation evidence nikdy nepovolí ovládnout později vzniklou jednotku. */\nexport function assertReference(reference: observedTypes.ObservedTaskReference, units: ObservedUnitSet): void {\n\tif ((units.task && systemd.invocation(units.task) !== reference.invocationId)\n\t\t|| (units.retention && systemd.invocation(units.retention) !== reference.retentionInvocationId)\n\t\t|| (units.guardian && systemd.invocation(units.guardian) !== reference.guardianInvocationId)) {\n\t\tthrow new errors.TaskError('IDENTITY_CONFLICT', 'The observed task invocation no longer matches the reference.', { reason: 'invocation-mismatch', taskId: reference.id });\n\t}\n}\n\n/** Složí serializovatelnou exact reference i pro částečnou topologii. */\nexport function reference(identity: observedTypes.ObservedTaskIdentity, manager: types.ManagerIdentity, units: ObservedUnitSet): observedTypes.ObservedTaskReference {\n\treturn Object.freeze({\n\t\t...observedValidation.identityOnly(identity), manager,\n\t\tinvocationId: systemd.invocation(units.task),\n\t\tretentionInvocationId: systemd.invocation(units.retention),\n\t\tguardianInvocationId: systemd.invocation(units.guardian),\n\t});\n}\n\n/** Agreguje cleanup konzervativně: complete platí jen při complete obou procesů. */\nfunction aggregateCleanup(payload: types.CleanupState, guardian: types.CleanupState): types.CleanupState {\n\tif (payload === 'complete' && guardian === 'complete') return 'complete';\n\tif (payload === 'pending' || guardian === 'pending') return 'pending';\n\tif (payload === 'incomplete' || guardian === 'incomplete') return 'incomplete';\n\treturn 'unknown';\n}\n\n/** Vytvoří truthful snapshot pouze tehdy, když jsou dostupné všechny tři role. */\nexport async function snapshot(identity: observedTypes.ObservedTaskIdentity, manager: types.ManagerIdentity, units: ObservedUnitSet, readPopulation: (controlGroup: string) => Promise<boolean | null> = systemd.cgroupPopulation): Promise<observedTypes.ObservedTaskSnapshot> {\n\tif (!units.task || !units.guardian) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The observed task topology is incomplete.', { reason: 'unit-not-found', taskId: identity.id });\n\tconst captured = reference(identity, manager, units);\n\tconst payload = await systemd.serviceSnapshot(units.task, readPopulation);\n\tconst guardian = await systemd.serviceSnapshot(units.guardian, readPopulation);\n\tconst cleanup = aggregateCleanup(payload.cleanup, guardian.cleanup);\n\tconst phase: observedTypes.ObservedTaskSnapshot['phase'] = payload.managerTerminal && guardian.managerTerminal && cleanup === 'complete' ? 'completed'\n\t\t: payload.managerTerminal || guardian.managerTerminal || payload.evidence.activeState === 'deactivating' || guardian.evidence.activeState === 'deactivating' || payload.result !== null || guardian.result !== null ? 'cleaning'\n\t\t\t: payload.evidence.activeState === 'active' && guardian.evidence.activeState === 'active' ? 'running' : 'starting';\n\treturn Object.freeze({\n\t\treference: captured,\n\t\tidentity: captured.invocationId && captured.retentionInvocationId && captured.guardianInvocationId ? 'complete' : 'incomplete',\n\t\tphase, cleanup,\n\t\tpayload: Object.freeze(payload), guardian: Object.freeze(guardian),\n\t});\n}\n","import * as clientCore from './client-core';\nimport * as errors from './errors';\nimport * as observedFinalization from './observed-finalization';\nimport * as observedProtocol from './observed-protocol';\nimport * as observedSystemd from './observed-systemd';\nimport * as observedValidation from './observed-validation';\nimport * as systemd from './systemd';\nimport * as validation from './validation';\nimport * as waiting from './waiting';\nimport type * as observedTypes from './observed-types';\nimport type * as types from './types';\n\n/** Observed topology codec nad jedním sdíleným klientským transportem a mutation enginem. */\nexport class ObservedOperations {\n\t/** Všechny lokální a manager zdroje vlastní společný client core. */\n\tprivate readonly core: clientCore.ClientCore;\n\n\t/** Připojí tříjednotkové operace bez vytvoření druhého D-Bus spojení. */\n\tconstructor(core: clientCore.ClientCore) {\n\t\tthis.core = core;\n\t}\n\n\t/** Přečte task, retention a guardian ve stabilním pořadí jednoho topology snapshotu. */\n\tprivate async readSet(identity: observedTypes.ObservedTaskIdentity): Promise<observedSystemd.ObservedUnitSet> {\n\t\tconst [task, retention, guardian] = await this.core.readUnits(identity, [identity.unitName, identity.retentionUnitName, identity.guardianUnitName]);\n\t\treturn Object.freeze({ task: task ?? null, retention: retention ?? null, guardian: guardian ?? null });\n\t}\n\n\t/** Ověří manager binding, ownership marker, policy a případná exact invocation ID. */\n\tprivate async checkedSet(target: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedSystemd.ObservedUnitSet> {\n\t\tif ('manager' in target) systemd.assertManager(target.manager, this.core.manager);\n\t\tconst units = await this.readSet(target);\n\t\tobservedSystemd.assertOwnership(target, units);\n\t\tif ('manager' in target) observedSystemd.assertReference(target, units);\n\t\treturn units;\n\t}\n\n\t/** Rozliší úplnou absenci, částečnou topologii a truthful společný snapshot. */\n\tprivate async lookupInternal(target: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedLookupResult> {\n\t\tconst units = await this.checkedSet(target);\n\t\tif (!units.task && !units.retention && !units.guardian) return { status: 'not-found', identity: observedValidation.identityOnly(target) };\n\t\tif (!units.task || !units.retention || !units.guardian) return { status: 'incomplete', reference: observedSystemd.reference(target, this.core.manager, units) };\n\t\tconst snapshot = await observedSystemd.snapshot(target, this.core.manager, units);\n\t\treturn { status: 'found', reference: snapshot.reference, snapshot };\n\t}\n\n\t/** Odešle jedinou tříjednotkovou transakci a vrátí se až po guardian readiness. */\n\tasync startObserved(value: observedTypes.ObservedTaskIntent, rawOptions: observedTypes.ObservedStartOptions): Promise<observedTypes.ObservedStartResult> {\n\t\tconst intent = observedValidation.validateObservedIntent(value);\n\t\tconst options = observedProtocol.validateStartOptions(rawOptions);\n\t\treturn await this.core.diagnostics.run(intent, /** Sváže submission i readiness s jedním redigovaným task kontextem. */ () => this.core.mutate(intent, async () => {\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet sockets: observedProtocol.PreparedObservedSockets | undefined;\n\t\t\ttry {\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.assertUnattempted(intent);\n\t\t\t\tconst inherited = await this.core.transport.readEnvironment();\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tlet unregister: (() => void) | undefined;\n\t\t\t\tlet terminal = false;\n\t\t\t\tsockets = await observedProtocol.prepareSockets(options, /** Odregistruje terminal handle i při závodu během startu. */ () => { terminal = true; unregister?.(); });\n\t\t\t\tunregister = this.core.register(sockets.observation);\n\t\t\t\tif (terminal) unregister();\n\t\t\t\tconst mapped = observedSystemd.creationProperties(intent, sockets.descriptors, inherited);\n\t\t\t\tthis.core.assertOpen();\n\t\t\t\tthis.core.markAttempt(intent);\n\t\t\t\tstage = 'submitted';\n\t\t\t\tthis.core.diagnostics.emit('observed.start.submitted');\n\t\t\t\tlet jobPath: string;\n\t\t\t\ttry {\n\t\t\t\t\tjobPath = await this.core.transport.start(intent.unitName, mapped.task, [\n\t\t\t\t\t\t{ name: intent.retentionUnitName, properties: mapped.retention },\n\t\t\t\t\t\t{ name: intent.guardianUnitName, properties: mapped.guardian },\n\t\t\t\t\t]);\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t} finally { sockets.closeSubmitted(); }\n\t\t\t\tawait sockets.observation.waitReady(observedSystemd.guardianReadinessTimeoutMs);\n\t\t\t\tthis.core.diagnostics.emit('observed.start.accepted');\n\t\t\t\tthis.core.hub.notify(intent.unitName);\n\t\t\t\tconst receipt: observedTypes.ObservedStartReceipt = Object.freeze({ outcome: 'accepted', identity: observedValidation.identityOnly(intent), manager: this.core.manager, jobPath });\n\t\t\t\treturn Object.freeze({ receipt, observation: sockets.observation });\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'startObserved', intent, stage);\n\t\t\t\tthis.core.diagnostics.emit('observed.start.error', reported.code);\n\t\t\t\tif (sockets) await sockets.observation.abort(reported);\n\t\t\t\tthrow reported;\n\t\t\t} finally { sockets?.closeSubmitted(); }\n\t\t}));\n\t}\n\n\t/** Čte existující observed evidence bez startu, retry nebo output reconnectu. */\n\tasync lookup(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedLookupResult> {\n\t\tconst target = observedValidation.validateObservedTarget(value);\n\t\treturn await this.core.diagnostics.run(target, /** Koreluje lookup jen bezpečnou identitou. */ async () => await this.lookupInternal(target));\n\t}\n\n\t/** Registruje právě jeden exact finalizer; nejasný start se bez lookupu neopakuje. */\n\tasync finalizeAfterCompletion(value: observedTypes.ObservedTaskReference, options: observedTypes.ObservedFinalizationOptions): Promise<observedTypes.ObservedFinalizationReceipt> {\n\t\tconst bootstrap = observedFinalization.prepare(value, options);\n\t\tconst reference = bootstrap.reference;\n\t\tconst unitName = observedFinalization.unitName(reference);\n\t\treturn await this.core.diagnostics.run(reference, /** Registrace používá stejnou task mutation frontu i redigovaný kontext. */ async () => {\n\t\t\treturn await this.core.mutate(reference, /** Jediná registrační mutation stejného tasku drží společnou klientskou frontu. */ async () => {\n\t\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\t\ttry {\n\t\t\t\t\tthis.core.assertOpen();\n\t\t\t\t\tsystemd.assertManager(reference.manager, this.core.manager);\n\t\t\t\t\tconst existing = await this.core.transport.readUnit(unitName);\n\t\t\t\t\tif (existing !== null) {\n\t\t\t\t\t\tobservedFinalization.assertRegistered(bootstrap, existing);\n\t\t\t\t\t\treturn Object.freeze({ outcome: 'already-registered', unitName, manager: this.core.manager, jobPath: null });\n\t\t\t\t\t}\n\t\t\t\t\tconst found = await this.lookupInternal(reference);\n\t\t\t\t\tif (found.status !== 'found') {\n\t\t\t\t\t\tthrow new errors.TaskError('RESULT_UNAVAILABLE', 'The task to finalize is unavailable.', {\n\t\t\t\t\t\t\treason: found.status === 'not-found' ? 'unit-not-found' : 'observed-topology-incomplete',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tconst inherited = await this.core.transport.readEnvironment();\n\t\t\t\t\tconst properties = await observedFinalization.creationProperties(bootstrap, inherited);\n\t\t\t\t\tthis.core.assertOpen();\n\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\tthis.core.diagnostics.emit('observed.finalization.submitted');\n\t\t\t\t\tlet jobPath: string;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tjobPath = await this.core.transport.start(unitName, properties, []);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t// Druhý klient mohl registrovat stejný finalizer po našem prvním čtení.\n\t\t\t\t\t\tif (error instanceof errors.TaskError && error.details.mutationOutcome === 'rejected') {\n\t\t\t\t\t\t\tconst concurrent = await this.core.transport.readUnit(unitName);\n\t\t\t\t\t\t\tif (concurrent !== null) {\n\t\t\t\t\t\t\t\tobservedFinalization.assertRegistered(bootstrap, concurrent);\n\t\t\t\t\t\t\t\treturn Object.freeze({ outcome: 'already-registered', unitName, manager: this.core.manager, jobPath: null });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\tthis.core.diagnostics.emit('observed.finalization.accepted');\n\t\t\t\t\treturn Object.freeze({ outcome: 'accepted', unitName, manager: this.core.manager, jobPath });\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst reported = clientCore.mutationError(error, 'finalizeAfterCompletion', reference, stage);\n\t\t\t\t\tthis.core.diagnostics.emit('observed.finalization.error', reported.code);\n\t\t\t\t\tthrow reported;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Vyžaduje kompletní exact topologii reference. */\n\tasync inspect(value: observedTypes.ObservedTaskReference): Promise<observedTypes.ObservedTaskSnapshot> {\n\t\tconst reference = observedValidation.validateObservedReference(value);\n\t\treturn await this.core.diagnostics.run(reference, /** Missing role zůstává explicitní observation chyba. */ async () => {\n\t\t\tconst found = await this.lookupInternal(reference);\n\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The referenced observed task result is unavailable.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'observed-topology-incomplete', taskId: reference.id });\n\t\t\treturn found.snapshot;\n\t\t});\n\t}\n\n\t/** Sleduje primární unit namespace; transport do něj přesměruje i auxiliary změny. */\n\tprivate async waitInternal(target: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, control: waiting.WaitControl): Promise<observedTypes.ObservedTaskSnapshot> {\n\t\tcontrol.check();\n\t\tthis.core.assertOpen();\n\t\tconst watch = this.core.hub.watch(target.unitName);\n\t\tlet taskInvocation: string | null = null;\n\t\tlet retentionInvocation: string | null = null;\n\t\tlet guardianInvocation: string | null = null;\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tcontrol.check();\n\t\t\t\tconst generation = watch.version();\n\t\t\t\tconst found = await control.race(this.lookupInternal(target));\n\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The observed task result is no longer complete.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'observed-topology-incomplete', taskId: target.id });\n\t\t\t\tconst captured = found.reference;\n\t\t\t\tif ((taskInvocation !== null && captured.invocationId !== taskInvocation)\n\t\t\t\t\t|| (retentionInvocation !== null && captured.retentionInvocationId !== retentionInvocation)\n\t\t\t\t\t|| (guardianInvocation !== null && captured.guardianInvocationId !== guardianInvocation)) {\n\t\t\t\t\tthrow new errors.TaskError('IDENTITY_CONFLICT', 'The observed task identity changed while waiting.', { reason: 'invocation-mismatch', taskId: target.id });\n\t\t\t\t}\n\t\t\t\ttaskInvocation = captured.invocationId;\n\t\t\t\tretentionInvocation = captured.retentionInvocationId;\n\t\t\t\tguardianInvocation = captured.guardianInvocationId;\n\t\t\t\tif (found.snapshot.payload.managerTerminal && found.snapshot.guardian.managerTerminal) {\n\t\t\t\t\tthis.core.diagnostics.emit(found.snapshot.cleanup === 'complete' ? 'observed.wait.completed' : 'observed.wait.cleanup-incomplete');\n\t\t\t\t\treturn found.snapshot;\n\t\t\t\t}\n\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t}\n\t\t} finally { watch.close(); }\n\t}\n\n\t/** Local abort nebo deadline nijak nemění payload, guardian ani manager timers. */\n\tasync wait(value: observedTypes.ObservedTaskIntent | observedTypes.ObservedTaskReference, options: types.WaitOptions = {}): Promise<observedTypes.ObservedTaskSnapshot> {\n\t\tconst target = observedValidation.validateObservedTarget(value);\n\t\tconst checkedOptions = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(target, /** Každý waiter vlastní oddělený cancellation scope. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(checkedOptions);\n\t\t\ttry { return await this.waitInternal(target, control); }\n\t\t\tcatch (error) {\n\t\t\t\tif (error instanceof errors.TaskError) this.core.diagnostics.emit('observed.wait.error', error.code);\n\t\t\t\tthrow error;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Zastaví jen payload; guardian zůstane živý, dokud nedrainuje oba kanály. */\n\tasync stop(value: observedTypes.ObservedTaskReference, options: types.StopOptions = {}): Promise<observedTypes.ObservedStopReceipt> {\n\t\tconst reference = observedValidation.validateObservedReference(value);\n\t\tconst checkedOptions = validation.validateWaitOptions(options, true);\n\t\treturn await this.core.diagnostics.run(reference, /** Zachová delivery outcome přes volitelné completion čekání. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(checkedOptions);\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\ttry {\n\t\t\t\tcontrol.check();\n\t\t\t\treturn await control.race(this.core.mutate(reference, async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tconst found = await control.race(this.lookupInternal(reference));\n\t\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The observed task to stop is unavailable.', { reason: found.status === 'incomplete' ? 'observed-topology-incomplete' : 'unit-not-found' });\n\t\t\t\t\tif (found.snapshot.phase === 'completed') return { outcome: 'already-completed', reference, jobPath: null, completion: found.snapshot };\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\tconst jobPath = await control.race(this.core.transport.stop(reference.unitName));\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\tthis.core.diagnostics.emit('observed.stop.accepted');\n\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\tconst completion = checkedOptions.wait ? await this.waitInternal(reference, control) : null;\n\t\t\t\t\treturn { outcome: 'accepted', reference, jobPath, completion };\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.mutationError(error, 'stop', reference, stage);\n\t\t\t\tthis.core.diagnostics.emit('observed.stop.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Odmítne release, dokud libovolná existující procesní role není terminální a čistá. */\n\tprivate async assertReleasable(reference: observedTypes.ObservedTaskReference, units: observedSystemd.ObservedUnitSet): Promise<void> {\n\t\tfor (const unit of [units.task, units.guardian]) {\n\t\t\tif (!unit) continue;\n\t\t\tconst snapshot = await systemd.serviceSnapshot(unit);\n\t\t\tif (!snapshot.managerTerminal || snapshot.cleanup !== 'complete') throw new errors.TaskError('TASK_RUNNING', 'An observed task can be released only after payload and guardian cleanup.', { reason: 'observed-task-not-completed', taskId: reference.id });\n\t\t}\n\t}\n\n\t/** Reset own failed record vrací false pouze při explicitním souběžném zmizení. */\n\tprivate async resetOwnFailed(name: string): Promise<boolean> {\n\t\ttry { await this.core.transport.resetFailed(name); return true; }\n\t\tcatch (error) { if (!clientCore.isAbsence(error)) throw error; return false; }\n\t}\n\n\t/** Uvolní retention až po opakované ownership a cleanup kontrole všech rolí. */\n\tasync release(value: observedTypes.ObservedTaskReference, options: types.ReleaseOptions = {}): Promise<types.ReleaseReceipt> {\n\t\tconst reference = observedValidation.validateObservedReference(value);\n\t\tconst checkedOptions = validation.validateWaitOptions(options);\n\t\treturn await this.core.diagnostics.run(reference, /** Celý cleanup má jeden caller-owned deadline. */ async () => {\n\t\t\tconst control = new waiting.WaitControl({ ...checkedOptions, timeoutMs: checkedOptions.timeoutMs ?? clientCore.defaultReleaseTimeoutMs });\n\t\t\tlet stage: clientCore.MutationStage = 'before-submission';\n\t\t\tlet acceptedCleanupMutations = 0;\n\t\t\ttry {\n\t\t\t\treturn await control.race(this.core.mutate(reference, async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tlet units = await control.race(this.checkedSet(reference));\n\t\t\t\t\tif (!units.task && !units.retention && !units.guardian) return { released: true, alreadyReleased: true, collected: true };\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, units));\n\t\t\t\t\tfor (const role of ['task', 'guardian', 'retention'] as const) {\n\t\t\t\t\t\tunits = await control.race(this.checkedSet(reference));\n\t\t\t\t\t\tconst name = role === 'task' ? reference.unitName : role === 'guardian' ? reference.guardianUnitName : reference.retentionUnitName;\n\t\t\t\t\t\tconst unit = units[role];\n\t\t\t\t\t\tif (unit?.properties.ActiveState !== 'failed') continue;\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(name))) { acceptedCleanupMutations++; stage = 'accepted'; }\n\t\t\t\t\t\telse stage = previousStage;\n\t\t\t\t\t\tunits = await control.race(this.checkedSet(reference));\n\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, units));\n\t\t\t\t\t}\n\t\t\t\t\tif (units.retention) {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait control.race(this.core.transport.stop(reference.retentionUnitName));\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} catch (error) { if (!clientCore.isAbsence(error)) throw error; stage = previousStage; }\n\t\t\t\t\t}\n\t\t\t\t\tconst watch = this.core.hub.watch(reference.unitName);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\tconst generation = watch.version();\n\t\t\t\t\t\t\tunits = await control.race(this.checkedSet(reference));\n\t\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, units));\n\t\t\t\t\t\t\tlet resetFailure = false;\n\t\t\t\t\t\t\tfor (const role of ['task', 'guardian', 'retention'] as const) {\n\t\t\t\t\t\t\t\tconst unit = units[role];\n\t\t\t\t\t\t\t\tif (unit?.properties.ActiveState !== 'failed') continue;\n\t\t\t\t\t\t\t\tconst name = role === 'task' ? reference.unitName : role === 'guardian' ? reference.guardianUnitName : reference.retentionUnitName;\n\t\t\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(name))) {\n\t\t\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t\t\t\tresetFailure = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (resetFailure) continue;\n\t\t\t\t\t\t\tif (!units.retention || (systemd.managerTerminal(units.retention) && units.retention.properties.ActiveState !== 'failed')) {\n\t\t\t\t\t\t\t\tthis.core.diagnostics.emit('observed.release.completed');\n\t\t\t\t\t\t\t\tthis.core.hub.notify(reference.unitName);\n\t\t\t\t\t\t\t\treturn { released: true, alreadyReleased: false, collected: !units.task && !units.retention && !units.guardian };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally { watch.close(); }\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = clientCore.releaseError(error, reference, stage, acceptedCleanupMutations);\n\t\t\t\tthis.core.diagnostics.emit('observed.release.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n}\n","import * as dbus from 'dbus-next';\nimport * as fs from 'node:fs/promises';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** A property description shared by the mapping and the concrete D-Bus adapter. */\nexport interface Property {\n\t/** Exact systemd property name. */\n\treadonly name: string;\n\t/** D-Bus signature, converted to a transport Variant only inside this module. */\n\treadonly signature: string;\n\t/** Validated wire value; not part of the public API. */\n\treadonly value: unknown;\n}\n\n/** Raw service properties stay internal; public snapshots expose a small diagnostic subset. */\nexport interface RawUnit {\n\t/** Unwrapped manager properties, which must be validated before classification. */\n\treadonly properties: Readonly<Record<string, unknown>>;\n}\n\n/** Jedna auxiliary transient unit vytvořená atomicky s primární službou. */\nexport interface AuxiliaryUnit {\n\t/** Exact systemd unit name odvozené z validovaného intentu. */\n\treadonly name: string;\n\t/** Validované properties převedené na Variant až na transportní hranici. */\n\treadonly properties: readonly Property[];\n}\n\n/** Narrow adapter seam for deterministic failures and races, not a generic task backend. */\nexport interface Transport {\n\t/** Identity fixed during connection and never silently updated. */\n\treadonly identity: types.ManagerIdentity;\n\t/** Reject a closed or failed connection before an operation can submit a request. */\n\tassertOpen(): void;\n\t/** Read a service; only an explicit no-such-unit reply maps to null. */\n\treadUnit(name: string): Promise<RawUnit | null>;\n\t/** Read inherited environment entries without changing manager configuration. */\n\treadEnvironment(): Promise<readonly string[]>;\n\t/** Submit one primary unit and all auxiliaries atomically with collision mode fail. */\n\tstart(name: string, properties: readonly Property[], auxiliaries: readonly AuxiliaryUnit[]): Promise<string>;\n\t/** Stop can replace a queued start job, but can never start or restart a service. */\n\tstop(name: string): Promise<string>;\n\t/** Clear a completed failed state so normal garbage collection can proceed. */\n\tresetFailed(name: string): Promise<void>;\n\t/** Subscribe to relevant notifications; an undefined name means connection-wide invalidation. */\n\tonChange(listener: (unitName?: string) => void): () => void;\n\t/** Destroy the local socket and pending observation resources only. */\n\tclose(): void;\n}\n\n/** Pinned dbus-next internals needed for safe descriptor and pending-call ownership. */\ninterface NativeBusInternals {\n\t/** The native stream's destroy method closes immediately instead of waiting for peer EOF. */\n\treadonly _connection: {\n\t\t/** Descriptor-capable stream created by the existing transport implementation. */\n\t\treadonly stream: {\n\t\t\t/** Negotiated Unix FD capability, updated by the transport handshake. */\n\t\t\treadonly supportsUnixFd?: boolean;\n\t\t\t/** Destroy local native socket resources, without sending a systemd stop. */\n\t\t\tdestroy(): void;\n\t\t\t/** Observe native stream EOF and errors. */\n\t\t\ton(event: string, listener: (...args: unknown[]) => void): void;\n\t\t};\n\t};\n\t/** Delete abandoned reply closures; upstream does not reject them on disconnect. */\n\treadonly _methodReturnHandlers: Record<number, unknown>;\n}\n\n/** Upstream accepts this option at runtime but omits it from SessionBusOptions declarations. */\ninterface DescriptorBusOptions extends dbus.SessionBusOptions {\n\t/** Require negotiation of SCM_RIGHTS-backed D-Bus descriptors. */\n\treadonly negotiateUnixFd: boolean;\n}\n\n/** Pending request ownership is separate from the upstream promise's lifetime. */\ninterface PendingRequest {\n\t/** Describes the delivery semantics of this request. */\n\treadonly operation: string;\n\t/** Mutations whose reply is lost must report an unknown outcome. */\n\treadonly mutation: boolean;\n\t/** Local timeout cleared on every settlement path. */\n\treadonly timer: ReturnType<typeof setTimeout>;\n\t/** Reject the adapter's promise independently of the transport's abandoned promise. */\n\treadonly reject: (error: unknown) => void;\n}\n\n/** Address of the concrete local manager API, not a user-supplied general D-Bus service. */\nconst managerPath = '/org/freedesktop/systemd1';\n/** Stable manager interface whose methods implement task lifecycle operations. */\nconst managerInterface = 'org.freedesktop.systemd1.Manager';\n/** Bus daemon endpoint used for identity and signal subscriptions. */\nconst busPath = '/org/freedesktop/DBus';\n/** Bus errors that cannot prove non-delivery of a mutation. */\nconst uncertainReplies = new Set(['org.freedesktop.DBus.Error.NoReply', 'org.freedesktop.DBus.Error.Timeout', 'org.freedesktop.DBus.Error.Disconnected']);\n/** Explicit absence replies, never inferred from a timeout or vanished manager. */\nconst absenceReplies = new Set(['org.freedesktop.systemd1.NoSuchUnit', 'org.freedesktop.DBus.Error.UnknownObject']);\n\n/** Native installation failures are permanent environment limits, not manager outages. */\nfunction connectionFailure(error: unknown): errors.TaskError {\n\tconst code = errors.errorCode(error);\n\tif (code === 'ERR_FDX_PLATFORM' || code === 'ERR_FDX_ABI' || code === 'ERR_FDX_BINARY_MISSING') {\n\t\treturn new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The installed Unix FD transport does not support this environment.', { reason: code }, error);\n\t}\n\treturn new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection failed.', {}, error);\n}\n\n/** Read one scalar from the untrusted shape of a D-Bus method return. */\nfunction scalar(reply: readonly unknown[]): string {\n\tif (typeof reply[0] !== 'string') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an unexpected response.', { reason: 'invalid-manager-response' });\n\treturn reply[0];\n}\n\n/** Convert a property dictionary without leaking transport types into the core. */\nfunction properties(reply: readonly unknown[]): Readonly<Record<string, unknown>> {\n\tconst source = reply[0];\n\tif (typeof source !== 'object' || source === null || Array.isArray(source)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned invalid properties.', { reason: 'invalid-manager-response' });\n\tconst result: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n\tfor (const [key, value] of Object.entries(source)) {\n\t\tif (!(value instanceof dbus.Variant)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an invalid property value.', { reason: 'invalid-manager-response' });\n\t\tresult[key] = value.value as unknown;\n\t}\n\treturn result;\n}\n\n/** Convert mapping values using the existing transport's marshaller. */\nfunction wireProperties(values: readonly Property[]): [string, dbus.Variant][] {\n\treturn values.map(/** Convert one validated property to the existing transport representation. */ value => [value.name, new dbus.Variant(value.signature, value.value)]);\n}\n\n/** Bound, identity-aware connection to the local systemd user manager. */\nexport class DbusTransport implements Transport {\n\t/** Default manager reply deadline; unrelated to task runtime. */\n\treadonly requestTimeoutMs: number;\n\t/** Underlying existing D-Bus implementation, loaded without connecting at module import. */\n\tprivate readonly bus: dbus.MessageBus;\n\t/** Documented pinned internal hooks; all access is confined to this adapter. */\n\tprivate readonly internals: NativeBusInternals;\n\t/** Outstanding calls rejected together when the connection becomes unusable. */\n\tprivate readonly pending = new Map<number, PendingRequest>();\n\t/** Shared source of state invalidations for lifecycle observers. */\n\tprivate readonly listeners = new Set<(unitName?: string) => void>();\n\t/** A connection never reconnects or changes identity behind the caller's back. */\n\tprivate failure: errors.TaskError | undefined;\n\t/** Unique manager bus name, populated before binding task operations. */\n\tprivate owner: string | undefined;\n\t/** Bound environment identity, available only after successful explicit connection. */\n\tprivate boundIdentity: types.ManagerIdentity | undefined;\n\n\t/** Create only the socket; capability and identity checks are completed by open(). */\n\tprivate constructor(requestTimeoutMs: number) {\n\t\tthis.requestTimeoutMs = requestTimeoutMs;\n\t\tconst options: DescriptorBusOptions = { busAddress: `unix:path=/run/user/${process.getuid!()}/bus`, negotiateUnixFd: true, authMethods: ['EXTERNAL'] };\n\t\tthis.bus = dbus.sessionBus(options);\n\t\t// dbus-next 0.10.2 has no public immediate-close or pending-call cancellation API.\n\t\tthis.internals = this.bus as unknown as NativeBusInternals;\n\t\tthis.bus.on('error', /** Preserve native compatibility errors while invalidating pending operations. */ error => this.fail(connectionFailure(error)));\n\t\tthis.internals._connection.stream.on('end', /** Treat native stream EOF as manager unavailability. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection ended.')));\n\t\tthis.internals._connection.stream.on('close', /** Wake callers when the native connection closes. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection closed.')));\n\t\tthis.bus.on('message', /** Reconcile unit notifications and manager-owner changes. */ (message: dbus.Message) => this.handleMessage(message));\n\t}\n\n\t/** Verify the concrete local environment without provisioning services or capabilities. */\n\tstatic async open(requestTimeoutMs: number): Promise<DbusTransport> {\n\t\tconst [major = 0, minor = 0] = process.versions.node.split('.').map(Number);\n\t\tif (process.platform !== 'linux' || major < 24 || (major === 24 && minor < 13) || !process.getuid) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Linux and Node 24.13.0 or newer are required.');\n\t\ttry { await fs.access('/sys/fs/cgroup/cgroup.controllers'); }\n\t\tcatch (error) { throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'A cgroup v2 hierarchy is required.', {}, error); }\n\t\tlet transport: DbusTransport | undefined;\n\t\ttry {\n\t\t\ttransport = new DbusTransport(requestTimeoutMs);\n\t\t\tawait transport.invoke('AddMatch', 's', [\"type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.freedesktop.systemd1'\"], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus');\n\t\t\ttransport.owner = scalar(await transport.invoke('GetNameOwner', 's', ['org.freedesktop.systemd1'], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tif (!transport.internals._connection.stream.supportsUnixFd) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The user bus transport cannot pass Unix file descriptors.', { reason: 'unix-fd-unavailable' });\n\t\t\tconst managerProperties = properties(await transport.invoke('GetAll', 's', [managerInterface], false, transport.owner, managerPath, 'org.freedesktop.DBus.Properties'));\n\t\t\tif (typeof managerProperties.Version !== 'string' || Number.parseInt(managerProperties.Version, 10) < 257 || !/^\\d/.test(managerProperties.Version)) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Systemd 257 or newer is required.', { reason: 'systemd-version' });\n\t\t\tconst machineId = scalar(await transport.invoke('GetMachineId', '', [], false, transport.owner, managerPath, 'org.freedesktop.DBus.Peer'));\n\t\t\tconst busId = scalar(await transport.invoke('GetId', '', [], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tconst bootId = (await fs.readFile('/proc/sys/kernel/random/boot_id', 'utf8')).trim();\n\t\t\ttransport.boundIdentity = Object.freeze({ scope: 'user', uid: process.getuid(), machineId, bootId, busId, owner: transport.owner });\n\t\t\tawait transport.invoke('AddMatch', 's', [`type='signal',sender='${transport.owner}',path_namespace='${managerPath}'`], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus');\n\t\t\tawait transport.invoke('Subscribe', '', [], false);\n\t\t\tconst currentOwner = scalar(await transport.invoke('GetNameOwner', 's', ['org.freedesktop.systemd1'], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tif (currentOwner !== transport.owner) throw new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager changed during connection.');\n\t\t\treturn transport;\n\t\t} catch (error) {\n\t\t\ttransport?.close();\n\t\t\tif (error instanceof errors.TaskError) throw error;\n\t\t\tthrow new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager is unavailable.', {}, error);\n\t\t}\n\t}\n\n\t/** Return the frozen manager identity rather than a mutable transport object. */\n\tget identity(): types.ManagerIdentity {\n\t\tif (!this.boundIdentity) throw new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager identity has not been established.');\n\t\treturn this.boundIdentity;\n\t}\n\n\t/** Closed connections never fall back to a fresh bus or another process runner. */\n\tassertOpen(): void {\n\t\tif (this.failure) throw this.failure;\n\t}\n\n\t/** Wake observers without letting a callback disrupt the transport's message dispatch. */\n\tprivate notify(unitName?: string): void {\n\t\tfor (const listener of this.listeners) {\n\t\t\ttry { listener(unitName); } catch { /* Periodic reconciliation also covers a failed observer callback. */ }\n\t\t}\n\t}\n\n\t/** Process only manager identity changes and relevant unit/job/property notifications. */\n\tprivate handleMessage(message: dbus.Message): void {\n\t\tif (message.type !== dbus.MessageType.SIGNAL) return;\n\t\tif (message.sender === 'org.freedesktop.DBus' && message.member === 'NameOwnerChanged' && message.body[0] === 'org.freedesktop.systemd1' && this.owner && message.body[2] !== this.owner) {\n\t\t\tthis.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager identity changed.'));\n\t\t\treturn;\n\t\t}\n\t\tif (message.sender !== this.owner) return;\n\t\tlet name: unknown;\n\t\tif (message.member === 'UnitNew' || message.member === 'UnitRemoved') name = message.body[0];\n\t\telse if (message.member === 'JobRemoved' || message.member === 'JobNew') name = message.body[2];\n\t\telse if (message.interface === 'org.freedesktop.DBus.Properties' && message.member === 'PropertiesChanged') {\n\t\t\tconst encoded = message.path?.match(/^\\/org\\/freedesktop\\/systemd1\\/unit\\/(.+)$/)?.[1];\n\t\t\tif (encoded) name = encoded.replace(/_([0-9a-f]{2})/g, /** Decode systemd object-path escaping for notification routing. */ (_match, hex: string) => String.fromCharCode(Number.parseInt(hex, 16)));\n\t\t}\n\t\tif (typeof name === 'string') {\n\t\t\tthis.notify(name);\n\t\t\tif (name.endsWith('-retention.service')) this.notify(name.replace(/-retention\\.service$/, '.service'));\n\t\t\tif (name.endsWith('-guardian.service')) this.notify(name.replace(/-guardian\\.service$/, '.service'));\n\t\t}\n\t}\n\n\t/** Close queued native writes before callers can release descriptors from pending requests. */\n\tprivate fail(failure: errors.TaskError): void {\n\t\tif (this.failure) return;\n\t\tthis.failure = failure;\n\t\ttry { this.internals._connection.stream.destroy(); } catch { /* Local resource teardown is best-effort and never retried by descriptor number. */ }\n\t\tfor (const [serial, request] of this.pending) {\n\t\t\tclearTimeout(request.timer);\n\t\t\tdelete this.internals._methodReturnHandlers[serial];\n\t\t\trequest.reject(request.mutation\n\t\t\t\t? new errors.TaskError('UNKNOWN_MUTATION_OUTCOME', 'The manager mutation outcome is unknown.', { operation: request.operation, mutationOutcome: 'unknown' }, failure)\n\t\t\t\t: failure);\n\t\t}\n\t\tthis.pending.clear();\n\t\tthis.notify();\n\t}\n\n\t/** Distinguish a confirmed error reply from an uncertain delivery or connection failure. */\n\tprivate translate(error: unknown, operation: string, mutation: boolean): errors.TaskError {\n\t\tconst name = errors.dbusErrorName(error);\n\t\tif (name && !uncertainReplies.has(name)) {\n\t\t\tconst denied = name === 'org.freedesktop.DBus.Error.AccessDenied' || name === 'org.freedesktop.DBus.Error.AuthFailed' || name === 'org.freedesktop.systemd1.AccessDenied' || name === 'org.freedesktop.DBus.Error.InteractiveAuthorizationRequired';\n\t\t\tconst unavailable = name === 'org.freedesktop.DBus.Error.NameHasNoOwner' || name === 'org.freedesktop.DBus.Error.ServiceUnknown';\n\t\t\treturn new errors.TaskError(denied ? 'PERMISSION_DENIED' : unavailable ? 'MANAGER_UNAVAILABLE' : mutation && operation === 'StartTransientUnit' ? 'START_REJECTED' : 'RESULT_UNAVAILABLE', 'The manager rejected the request.', { operation, ...(mutation ? { mutationOutcome: 'rejected' as const } : {}), reason: name }, error);\n\t\t}\n\t\treturn new errors.TaskError(mutation ? 'UNKNOWN_MUTATION_OUTCOME' : 'MANAGER_UNAVAILABLE', mutation ? 'The manager mutation outcome is unknown.' : 'The manager request failed.', { operation, ...(mutation ? { mutationOutcome: 'unknown' as const } : {}) }, error);\n\t}\n\n\t/** Send exactly once, with an adapter-owned timeout and cleanup of abandoned reply handlers. */\n\tprivate async invoke(member: string, signature: string, body: unknown[], mutation: boolean, destination = this.owner ?? 'org.freedesktop.systemd1', objectPath = managerPath, iface = managerInterface): Promise<readonly unknown[]> {\n\t\ttry { this.assertOpen(); }\n\t\tcatch (error) {\n\t\t\tif (mutation && error instanceof errors.TaskError) throw new errors.TaskError(error.code, error.message, { operation: member, mutationOutcome: 'not-submitted' }, error);\n\t\t\tthrow error;\n\t\t}\n\t\tconst message = new dbus.Message({ destination, path: objectPath, interface: iface, member, signature, body });\n\t\tmessage.serial = this.bus.newSerial();\n\t\tconst serial = message.serial;\n\t\treturn await new Promise<readonly unknown[]>(/** Own the deadline and settlement of exactly one D-Bus request. */ (resolve, reject) => {\n\t\t\tconst timer = setTimeout(/** Invalidate the connection before releasing possibly queued descriptors. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager request deadline expired.', { operation: member, reason: 'request-timeout' })), this.requestTimeoutMs);\n\t\t\tthis.pending.set(serial, { operation: member, mutation, timer, reject });\n\t\t\tvoid this.bus.call(message).then(/** Settle only a still-owned request and discard late replies. */ reply => {\n\t\t\t\tif (!this.pending.delete(serial)) return;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tif (reply) resolve(reply.body as unknown[]);\n\t\t\t\telse reject(new errors.TaskError(mutation ? 'UNKNOWN_MUTATION_OUTCOME' : 'RESULT_UNAVAILABLE', 'The manager returned no reply.', { operation: member, ...(mutation ? { mutationOutcome: 'unknown' as const } : {}) }));\n\t\t\t}, /** Translate delivery evidence and clean abandoned upstream reply handlers. */ error => {\n\t\t\t\tif (!this.pending.delete(serial)) return;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tdelete this.internals._methodReturnHandlers[serial];\n\t\t\t\tconst translated = this.translate(error, member, mutation);\n\t\t\t\tif (translated.code === 'MANAGER_UNAVAILABLE' || translated.code === 'UNKNOWN_MUTATION_OUTCOME') this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager connection is no longer reliable.', {}, error));\n\t\t\t\treject(translated);\n\t\t\t});\n\t\t});\n\t}\n\n\t/** A missing object and a disconnected manager have deliberately different outcomes. */\n\tasync readUnit(name: string): Promise<RawUnit | null> {\n\t\ttry {\n\t\t\tconst objectPath = scalar(await this.invoke('GetUnit', 's', [name], false));\n\t\t\tconst values = properties(await this.invoke('GetAll', 's', [''], false, this.owner, objectPath, 'org.freedesktop.DBus.Properties'));\n\t\t\tif (values.LoadState === 'not-found' && values.Transient !== true) return null;\n\t\t\treturn { properties: values };\n\t\t} catch (error) {\n\t\t\tif (error instanceof errors.TaskError && error.details.reason && absenceReplies.has(error.details.reason)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/** Read inherited names immediately before start, keeping manager configuration untouched. */\n\tasync readEnvironment(): Promise<readonly string[]> {\n\t\tconst values = properties(await this.invoke('GetAll', 's', [managerInterface], false, this.owner, managerPath, 'org.freedesktop.DBus.Properties'));\n\t\tif (!Array.isArray(values.Environment) || !values.Environment.every(/** Reject malformed manager environment entries before property mapping. */ value => typeof value === 'string')) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager environment is unavailable.');\n\t\treturn values.Environment as string[];\n\t}\n\n\t/** Job mode fail prevents collision-driven replacement; the user command is never retried. */\n\tasync start(name: string, values: readonly Property[], auxiliaries: readonly AuxiliaryUnit[]): Promise<string> {\n\t\treturn scalar(await this.invoke('StartTransientUnit', 'ssa(sv)a(sa(sv))', [name, 'fail', wireProperties(values), auxiliaries.map(/** Zachová pořadí topology codecu v jediné transakci. */ unit => [unit.name, wireProperties(unit.properties)])], true));\n\t}\n\n\t/** Replace only stop/start jobs as needed to stop; this never invokes a restart operation. */\n\tasync stop(name: string): Promise<string> {\n\t\treturn scalar(await this.invoke('StopUnit', 'ss', [name, 'replace'], true));\n\t}\n\n\t/** Reset a completed own record; callers must verify ownership before reaching this method. */\n\tasync resetFailed(name: string): Promise<void> {\n\t\tawait this.invoke('ResetFailedUnit', 's', [name], true);\n\t}\n\n\t/** Multiple waiters share one signal subscription and remove their own listeners only. */\n\tonChange(listener: (unitName?: string) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn /** Remove only this observer from shared adapter notifications. */ () => { this.listeners.delete(listener); };\n\t}\n\n\t/** Disconnect is entirely local and deliberately does not call StopUnit. */\n\tclose(): void {\n\t\tthis.fail(new errors.TaskError('DISCONNECTED', 'The task client is disconnected.'));\n\t\tthis.listeners.clear();\n\t}\n}\n","/** A deliberately small allowlist of properties that cannot replace task lifecycle policy. */\nexport interface SystemdProperty {\n\t/** The resource weight to pass to the transient service. */\n\treadonly name: 'CPUWeight' | 'IOWeight';\n\t/** The systemd D-Bus signature, independent of the transport implementation. */\n\treadonly signature: 't';\n\t/** An integer resource weight from 1 through 10000. */\n\treadonly value: number;\n}\n\n/** A command specification suitable for serialization before any attempt to execute it. */\nexport interface TaskSpec {\n\t/** Absolute executable path; no PATH lookup or shell is performed. */\n\treadonly executable: string;\n\t/** Literal arguments excluding argv[0], which is the executable path. */\n\treadonly argv: readonly string[];\n\t/** Absolute working directory, which must already exist at execution time. */\n\treadonly cwd: string;\n\t/** Explicit environment entries; systemd may add its own execution metadata. */\n\treadonly env: Readonly<Record<string, string>>;\n\t/** Positive integer milliseconds, or null to explicitly disable the runtime limit. */\n\treadonly runtimeLimitMs: number | null;\n\t/** Positive integer milliseconds before manager-owned SIGKILL escalation. */\n\treadonly stopGraceMs: number;\n\t/** Optional resource weights; all other low-level properties are reserved. */\n\treadonly systemdProperties?: readonly SystemdProperty[];\n}\n\n/** Common serializable ownership evidence, without environment or command arguments. */\nexport interface TaskIdentity {\n\t/** Serialization version understood by this library. */\n\treadonly version: 1;\n\t/** Random UUID generated before submission. */\n\treadonly id: string;\n\t/** Unique transient service name derived from the ID. */\n\treadonly unitName: string;\n\t/** Unique auxiliary service name derived from the same ID. */\n\treadonly retentionUnitName: string;\n\t/** V1 supports the local user manager only. */\n\treadonly managerScope: 'user';\n\t/** SHA-256 fingerprint of the normalized task specification. */\n\treadonly fingerprint: string;\n}\n\n/** A prepared intention; saving it does not imply that execution was attempted. */\nexport interface TaskIntent extends TaskIdentity {\n\t/** Absence of the observed discriminator keeps both serialized intent families disjoint. */\n\treadonly kind?: never;\n\t/** Execution configuration, potentially containing secrets; store accordingly. */\n\treadonly spec: TaskSpec;\n}\n\n/** Identity of the specific environment in which a task was observed. */\nexport interface ManagerIdentity {\n\t/** Manager privilege scope; system-manager references are not supported in V1. */\n\treadonly scope: 'user';\n\t/** Effective local UID whose user bus owns the task. */\n\treadonly uid: number;\n\t/** Machine identity reported by the manager's D-Bus peer. */\n\treadonly machineId: string;\n\t/** Local kernel boot identity, preventing cross-boot adoption. */\n\treadonly bootId: string;\n\t/** Unique identity of the user message bus. */\n\treadonly busId: string;\n\t/** Unique bus owner of org.freedesktop.systemd1 at connection time. */\n\treadonly owner: string;\n}\n\n/** An observed pair of unit instances; null IDs explicitly mean incomplete evidence. */\nexport interface TaskReference extends TaskIdentity {\n\t/** Absence of the observed discriminator prevents cross-topology client calls. */\n\treadonly kind?: never;\n\t/** The manager in which the reference was obtained. */\n\treadonly manager: ManagerIdentity;\n\t/** Main service invocation, or null if no invocation was observed. */\n\treadonly invocationId: string | null;\n\t/** Auxiliary invocation, or null if it was absent or never invoked. */\n\treadonly retentionInvocationId: string | null;\n}\n\n/** Input from /dev/null, an existing file, or a caller-owned descriptor. */\nexport type TaskInput =\n\t| { /** Explicit EOF input. */ readonly type: 'null' }\n\t| { /** Open a file before submission. */ readonly type: 'file'; /** Absolute existing input path. */ readonly path: string }\n\t| { /** Borrow a descriptor without closing it. */ readonly type: 'fd'; /** Nonnegative Unix descriptor, held open until start settles. */ readonly fd: number };\n\n/** Output without decoding, in-memory capture, or automatic directory creation. */\nexport type TaskOutput =\n\t| { /** Explicitly discard output. */ readonly type: 'null' }\n\t| { /** Open an application-owned file before submission. */ readonly type: 'file'; /** Absolute output path. */ readonly path: string; /** Explicit append or truncate semantics. */ readonly mode: 'append' | 'truncate' }\n\t| { /** Borrow a descriptor without closing it. */ readonly type: 'fd'; /** Nonnegative Unix descriptor, held open until start settles. */ readonly fd: number };\n\n/** All standard descriptors are explicit and excluded from persistent task identities. */\nexport interface TaskIO {\n\t/** Input source; this library does not create an interactive terminal. */\n\treadonly stdin: TaskInput;\n\t/** Binary standard output destination. */\n\treadonly stdout: TaskOutput;\n\t/** Binary standard error destination. */\n\treadonly stderr: TaskOutput;\n}\n\n/** Explicit discard configuration for tasks whose output is not needed. */\nexport const nullIO: TaskIO = Object.freeze({\n\tstdin: Object.freeze({ type: 'null' as const }),\n\tstdout: Object.freeze({ type: 'null' as const }),\n\tstderr: Object.freeze({ type: 'null' as const }),\n});\n\n/** Whether the manager and cgroup provide evidence of finished descendant cleanup. */\nexport type CleanupState = 'pending' | 'complete' | 'incomplete' | 'unknown';\n\n/** Raw evidence retained by the specific service, with 64-bit values serialized as decimals. */\nexport interface TaskEvidence {\n\t/** Raw systemd Unit.ActiveState. */\n\treadonly activeState: string;\n\t/** Raw systemd Unit.SubState. */\n\treadonly subState: string;\n\t/** Raw systemd Service.Result, without inferred stop intent. */\n\treadonly systemdResult: string;\n\t/** CLD_* wait-status category reported by systemd. */\n\treadonly execMainCode: number;\n\t/** Exit code or signal number according to execMainCode. */\n\treadonly execMainStatus: number;\n\t/** Monotonic main-process start timestamp in microseconds; zero means absent. */\n\treadonly execMainStartUsec: string;\n\t/** Monotonic main-process exit timestamp in microseconds; zero means absent. */\n\treadonly execMainExitUsec: string;\n\t/** Retained active-entry evidence under Type=exec. */\n\treadonly activeEnterUsec: string;\n\t/** Current job ID, or zero when no job is pending. */\n\treadonly jobId: number;\n\t/** Manager-reported cgroup path, possibly empty after cleanup. */\n\treadonly controlGroup: string;\n\t/** Hierarchical cgroup population evidence; null when unavailable or unnecessary. */\n\treadonly cgroupPopulated: boolean | null;\n}\n\n/** A program failure is a normal result, distinct from a transport or observation error. */\nexport interface TaskResult {\n\t/** Classification based on execution and exit evidence, never just the numeric status. */\n\treadonly kind: 'exited' | 'signaled' | 'execution-failed' | 'not-executed' | 'unknown';\n\t/** Program or systemd execution status, present only for CLD_EXITED. */\n\treadonly exitCode: number | null;\n\t/** Signal number, present only for CLD_KILLED or CLD_DUMPED. */\n\treadonly signal: number | null;\n\t/** Whether Type=exec activation was confirmed by retained manager evidence. */\n\treadonly execution: 'confirmed' | 'not-confirmed';\n\t/** Raw systemd result; timeout can describe runtime, stop, or cleanup escalation. */\n\treadonly systemdResult: string;\n\t/** Cleanup must be checked independently of a successful main-process exit. */\n\treadonly cleanup: CleanupState;\n}\n\n/** A current state observation, not a durable event history. */\nexport interface TaskSnapshot {\n\t/** Reference captured from this observation. */\n\treadonly reference: TaskReference;\n\t/** Complete requires observed InvocationIDs for both task and retention service. */\n\treadonly identity: 'complete' | 'incomplete';\n\t/** Process phase; completed always requires confirmed cleanup. */\n\treadonly phase: 'starting' | 'running' | 'cleaning' | 'completed';\n\t/** Main PID is diagnostic only and never used as task identity. */\n\treadonly mainPid: number;\n\t/** True only for inactive/failed state without a pending job. */\n\treadonly managerTerminal: boolean;\n\t/** Current cleanup evidence. */\n\treadonly cleanup: CleanupState;\n\t/** Available main-exit or terminal evidence, possibly before cleanup finishes. */\n\treadonly result: TaskResult | null;\n\t/** Minimal raw properties needed to audit the classification. */\n\treadonly evidence: TaskEvidence;\n}\n\n/** Absence does not prove that a task never ran; incomplete retention is also explicit. */\nexport type LookupResult =\n\t| { /** Both observation and instance evidence are available. */ readonly status: 'found'; /** Reference from this read. */ readonly reference: TaskReference; /** Current task state. */ readonly snapshot: TaskSnapshot }\n\t| { /** No owned task or retention record was found in the reachable manager. */ readonly status: 'not-found'; /** Requested identity without secrets. */ readonly identity: TaskIdentity }\n\t| { /** Only the auxiliary record remains; the main result is unavailable. */ readonly status: 'incomplete'; /** Partial identity, safe to inspect and conservatively release. */ readonly reference: TaskReference };\n\n/** Start acceptance means the manager queued the creation transaction, not successful exec. */\nexport interface StartReceipt {\n\t/** Acknowledged by the manager; subsequent program failure is a separate result. */\n\treadonly outcome: 'accepted';\n\t/** Requested identity, which is already known before the call. */\n\treadonly identity: TaskIdentity;\n\t/** Manager that accepted the request. */\n\treadonly manager: ManagerIdentity;\n\t/** Diagnostic path of the accepted job; jobs are not durable identities. */\n\treadonly jobPath: string;\n}\n\n/** Local waiting controls; neither option changes manager-owned execution limits. */\nexport interface WaitOptions {\n\t/** Aborting affects this caller's wait only. */\n\treadonly signal?: AbortSignal;\n\t/** Positive integer local deadline, at most 2147483647 milliseconds. */\n\treadonly timeoutMs?: number;\n}\n\n/** Stop acceptance and optional completion waiting are separate stages. */\nexport interface StopOptions extends WaitOptions {\n\t/** When true, await terminal cleanup after manager acceptance. Defaults to false. */\n\treadonly wait?: boolean;\n}\n\n/** Local controls for the complete release sequence, independent of each D-Bus call. */\nexport interface ReleaseOptions extends WaitOptions {\n\t/** Total local release deadline including queueing; defaults to 5000 milliseconds. */\n\treadonly timeoutMs?: number;\n}\n\n/** Successful stop submission or an already-completed instance. */\nexport interface StopReceipt {\n\t/** Already-completed does not submit any stop request. */\n\treadonly outcome: 'accepted' | 'already-completed';\n\t/** The exact reference checked before stopping. */\n\treadonly reference: TaskReference;\n\t/** Accepted stop job, or null for an already-completed instance. */\n\treadonly jobPath: string | null;\n\t/** Present when completion was awaited or already known. */\n\treadonly completion: TaskSnapshot | null;\n}\n\n/** Explicit release affects manager retention, never application log files. */\nexport interface ReleaseReceipt {\n\t/** The auxiliary retention is no longer active. */\n\treadonly released: true;\n\t/** Both identities were already absent when release began. */\n\treadonly alreadyReleased: boolean;\n\t/** Whether both records were already garbage-collected at the final observation. */\n\treadonly collected: boolean;\n}\n\n/** Stable categories for callers making recovery decisions. */\nexport type ErrorCode = 'INVALID_INPUT' | 'UNSUPPORTED_ENVIRONMENT' | 'PERMISSION_DENIED'\n\t| 'MANAGER_UNAVAILABLE' | 'IDENTITY_CONFLICT' | 'START_REJECTED' | 'UNKNOWN_MUTATION_OUTCOME'\n\t| 'RESULT_UNAVAILABLE' | 'TASK_RUNNING' | 'WAIT_ABORTED' | 'WAIT_TIMEOUT' | 'DISCONNECTED'\n\t| 'OBSERVATION_FAILED';\n\n/** Metadata safe for default error formatting and diagnostic output. */\nexport interface ErrorDetails {\n\t/** Public or transport operation where the failure was observed. */\n\treadonly operation?: string;\n\t/** Known delivery state; an unknown result must never authorize automatic retry. */\n\treadonly mutationOutcome?: 'not-submitted' | 'rejected' | 'accepted' | 'unknown';\n\t/** Acknowledged cleanup calls before a release error; may be positive even when a later call is unknown. */\n\treadonly acceptedCleanupMutations?: number;\n\t/** Stable detail such as unit-not-found or incomplete-identity. */\n\treadonly reason?: string;\n\t/** Random task ID only, never the serialized intent. */\n\treadonly taskId?: string;\n}\n\n/** A redacted event correlated centrally with a task or connection flow. */\nexport interface DiagnosticEvent {\n\t/** Stable event name; no command, environment, or output content. */\n\treadonly event: string;\n\t/** Immutable correlation context captured at emission time. */\n\treadonly context: {\n\t\t/** Connection flow shared by this client's operations. */\n\t\treadonly connection: { /** Random local connection ID. */ readonly id: string };\n\t\t/** Task scope, present for task operations. */\n\t\treadonly task?: { /** Prepared task UUID. */ readonly id: string; /** Derived unit name. */ readonly unitName: string };\n\t};\n\t/** Stable failure category, when applicable. */\n\treadonly code?: ErrorCode;\n}\n\n/** Explicit user-manager connection options; no automatic provisioning is performed. */\nexport interface ConnectOptions {\n\t/** Positive local D-Bus call deadline, at most 2147483647 ms; defaults to 5000. */\n\treadonly requestTimeoutMs?: number;\n\t/** Optional redacted event sink; sync throws and async rejections are isolated, never awaited. */\n\treadonly onDiagnostic?: (event: DiagnosticEvent) => void;\n}\n\n/** The local client owns observation resources; systemd owns the task processes. */\nexport interface TaskClient {\n\t/** Bound manager identity for persistence and diagnosis. */\n\treadonly manager: ManagerIdentity;\n\t/** Submit exactly one creation attempt for a locally validated intention. */\n\tstart(intent: TaskIntent, io: TaskIO): Promise<StartReceipt>;\n\t/** Read existing ownership evidence without starting or retrying anything. */\n\tlookup(target: TaskIntent | TaskReference): Promise<LookupResult>;\n\t/** Read the exact referenced instance or fail with explicit observation unavailability. */\n\tinspect(reference: TaskReference): Promise<TaskSnapshot>;\n\t/** Wait for cleanup, or return explicit incomplete cleanup on terminal manager failure. */\n\twait(target: TaskIntent | TaskReference, options?: WaitOptions): Promise<TaskSnapshot>;\n\t/** Ask the manager to stop the referenced cgroup, optionally awaiting cleanup. */\n\tstop(reference: TaskReference, options?: StopOptions): Promise<StopReceipt>;\n\t/** Release only completed owned retention, preserving application files. */\n\trelease(reference: TaskReference, options?: ReleaseOptions): Promise<ReleaseReceipt>;\n\t/** Close local connections and observers without stopping any task. */\n\tdisconnect(): Promise<void>;\n}\n"],"mappings":"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,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,OAAO;AAAA,QACP,KAAK;AAAA,QACL,SAAS;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,KAAK;AAAA,QACL,SAAS;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV,OAAO;AAAA,QACP,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,MACT,CAAC;AAED,aAAO,KAAK,IAAI,QAAQ,EAAE,QAAQ,SAAU,KAAK;AAC/C,YAAI,IAAI,IAAI,SAAS,GAAG;AACxB,YAAIC,KAAI,OAAO,MAAM,WAAW,OAAO,aAAa,CAAC,IAAI;AACzD,YAAI,SAAS,GAAG,IAAIA;AAAA,MACtB,CAAC;AAED,eAAS,KAAK,IAAI,OAAO;AACvB,YAAI,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI;AAAA,MAC5B;AAGA,UAAI,IAAI;AAER,eAAS,KAAK,QAAQ,OAAO,MAAM;AACjC,eAAO,KAAK,KAAK,OAAO,KAAK,EAAE,IAAI;AAAA,MACrC;AAEA,eAAS,oBAAoB,MAAM;AACjC,YAAI,QAAQ,QAAQ,KAAK,MAAM,0CAA0C;AACzE,eAAO,QAAQ,MAAM,CAAC,IAAI;AAAA,MAC5B;AAEA,eAAS,sBAAsB,UAAU;AACvC,YAAI,CAAC,UAAU;AACb,iBAAO;AAAA,QACT;AAEA,eAAO,SAAS,YAAY,EAAE,QAAQ,cAAc,EAAE;AAAA,MACxD;AAEA,eAAS,eAAe,kBAAkB,kBAAkB;AAC1D,cAAM,WAAW,sBAAsB,gBAAgB;AACvD,cAAM,WAAW,sBAAsB,gBAAgB;AAEvD,YAAI,CAAC,YAAY,CAAC,UAAU;AAC1B,iBAAO;AAAA,QACT;AAEA,YAAI,aAAa,SAAS;AACxB,iBAAO,aAAa,aAAa,aAAa;AAAA,QAChD;AAEA,eAAO,aAAa;AAAA,MACtB;AAEA,eAAS,+BAA+B,QAAQ,MAAM;AACpD,YACE,CAAC,OAAO,UACR,CAAC,OAAO,YACR,CAAC,QACD,KAAK,SAAS,OACd;AACA;AAAA,QACF;AAEA,YAAI,mBAAmB,oBAAoB,KAAK,IAAI;AACpD,YACE,oBACA,CAAC,eAAe,OAAO,UAAU,gBAAgB,GACjD;AACA;AAAA,YACE;AAAA,YACA,8BACE,mBACA,8CACA,OAAO,SAAS,YAAY;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AAEA,eAAS,SAAS,QAAQ,UAAU,MAAM;AACxC,YAAI,OAAO,SAAU,WAAU,MAAM;AACrC,aAAK,QAAQ,UAAU,IAAI;AAAA,MAC7B;AAEA,eAAS,UAAU,QAAQ;AACzB,eAAO,WAAW,SAAS,OAAO,KAAK,OAAO,QAAQ;AACtD,YAAI,OAAO,SAAU,MAAK,QAAQ,UAAU,OAAO,QAAQ;AAC3D,eAAO,WAAW;AAAA,MACpB;AAEA,eAAS,SAAS,KAAK,MAAM;AAC3B,YAAI,IAAI,KAAM,QAAO,KAAK,KAAK;AAC/B,YAAI,IAAI,UAAW,QAAO,KAAK,QAAQ,QAAQ,GAAG;AAClD,eAAO;AAAA,MACT;AAEA,eAAS,MAAM,QAAQ,IAAI;AACzB,kBAAU,MAAM;AAChB,YAAI,OAAO,eAAe;AACxB,gBACE,aACA,OAAO,OACP,eACA,OAAO,SACP,aACA,OAAO;AAAA,QACX;AACA,aAAK,IAAI,MAAM,EAAE;AACjB,eAAO,QAAQ;AACf,aAAK,QAAQ,WAAW,EAAE;AAC1B,eAAO;AAAA,MACT;AAEA,eAAS,IAAI,QAAQ;AACnB,YAAI,OAAO,WAAW,CAAC,OAAO;AAC5B,qBAAW,QAAQ,mBAAmB;AACxC,YACE,OAAO,UAAU,EAAE,SACnB,OAAO,UAAU,EAAE,oBACnB,OAAO,UAAU,EAAE,MACnB;AACA,gBAAM,QAAQ,gBAAgB;AAAA,QAChC;AACA,kBAAU,MAAM;AAChB,eAAO,IAAI;AACX,eAAO,SAAS;AAChB,aAAK,QAAQ,OAAO;AACpB,kBAAU,KAAK,QAAQ,OAAO,QAAQ,OAAO,GAAG;AAChD,eAAO;AAAA,MACT;AAEA,eAAS,WAAW,QAAQ,SAAS;AACnC,YAAI,OAAO,WAAW,YAAY,EAAE,kBAAkB,YAAY;AAChE,gBAAM,IAAI,MAAM,wBAAwB;AAAA,QAC1C;AACA,YAAI,OAAO,QAAQ;AACjB,gBAAM,QAAQ,OAAO;AAAA,QACvB;AAAA,MACF;AAEA,eAAS,OAAO,QAAQ;AACtB,YAAI,CAAC,OAAO,OAAQ,QAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,EAAE;AACtE,YAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,YAAI,MAAO,OAAO,MAAM,EAAE,MAAM,OAAO,SAAS,YAAY,CAAC,EAAE;AAG/D,YAAI,OAAO,IAAI,OAAO;AACpB,cAAI,KAAK,OAAO;AAAA,QAClB;AACA,eAAO,WAAW,SAAS;AAC3B,iBAAS,QAAQ,kBAAkB,GAAG;AAAA,MACxC;AAEA,eAAS,MAAM,MAAM,WAAW;AAC9B,YAAI,IAAI,KAAK,QAAQ,GAAG;AACxB,YAAI,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG;AAClD,YAAI,SAAS,SAAS,CAAC;AACvB,YAAI,QAAQ,SAAS,CAAC;AAGtB,YAAI,aAAa,SAAS,SAAS;AACjC,mBAAS;AACT,kBAAQ;AAAA,QACV;AAEA,eAAO,EAAE,QAAgB,MAAa;AAAA,MACxC;AAEA,eAAS,OAAO,QAAQ;AACtB,YAAI,CAAC,OAAO,QAAQ;AAClB,iBAAO,aAAa,OAAO,WAAW,OAAO,SAAS,EAAE;AAAA,QAC1D;AAEA,YACE,OAAO,WAAW,QAAQ,OAAO,UAAU,MAAM,MACjD,OAAO,IAAI,WAAW,eAAe,OAAO,UAAU,GACtD;AACA,iBAAO,aAAa,OAAO,cAAc;AACzC;AAAA,QACF;AAEA,YAAI,OAAO,IAAI,OAAO;AACpB,cAAI,KAAK,MAAM,OAAO,YAAY,IAAI;AACtC,cAAI,SAAS,GAAG;AAChB,cAAI,QAAQ,GAAG;AAEf,cAAI,WAAW,SAAS;AAEtB,gBAAI,UAAU,SAAS,OAAO,gBAAgB,eAAe;AAC3D;AAAA,gBACE;AAAA,gBACA,kCACE,gBACA,eAEA,OAAO;AAAA,cACX;AAAA,YACF,WACE,UAAU,WACV,OAAO,gBAAgB,iBACvB;AACA;AAAA,gBACE;AAAA,gBACA,oCACE,kBACA,eAEA,OAAO;AAAA,cACX;AAAA,YACF,OAAO;AACL,kBAAI,MAAM,OAAO;AACjB,kBAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,kBAAI,IAAI,OAAO,OAAO,IAAI;AACxB,oBAAI,KAAK,OAAO,OAAO,OAAO,EAAE;AAAA,cAClC;AACA,kBAAI,GAAG,KAAK,IAAI,OAAO;AAAA,YACzB;AAAA,UACF;AAKA,iBAAO,WAAW,KAAK,CAAC,OAAO,YAAY,OAAO,WAAW,CAAC;AAAA,QAChE,OAAO;AAEL,iBAAO,IAAI,WAAW,OAAO,UAAU,IAAI,OAAO;AAClD,mBAAS,QAAQ,eAAe;AAAA,YAC9B,MAAM,OAAO;AAAA,YACb,OAAO,OAAO;AAAA,UAChB,CAAC;AAAA,QACH;AAEA,eAAO,aAAa,OAAO,cAAc;AAAA,MAC3C;AAEA,eAAS,QAAQ,QAAQ,aAAa;AACpC,YAAI,OAAO,IAAI,OAAO;AAEpB,cAAI,MAAM,OAAO;AAGjB,cAAI,KAAK,MAAM,OAAO,OAAO;AAC7B,cAAI,SAAS,GAAG;AAChB,cAAI,QAAQ,GAAG;AACf,cAAI,MAAM,IAAI,GAAG,GAAG,MAAM,KAAK;AAE/B,cAAI,IAAI,UAAU,CAAC,IAAI,KAAK;AAC1B;AAAA,cACE;AAAA,cACA,+BAA+B,KAAK,UAAU,OAAO,OAAO;AAAA,YAC9D;AACA,gBAAI,MAAM,GAAG;AAAA,UACf;AAEA,cAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,cAAI,IAAI,MAAM,OAAO,OAAO,IAAI,IAAI;AAClC,mBAAO,KAAK,IAAI,EAAE,EAAE,QAAQ,SAAU,GAAG;AACvC,uBAAS,QAAQ,mBAAmB;AAAA,gBAClC,QAAQ;AAAA,gBACR,KAAK,IAAI,GAAG,CAAC;AAAA,cACf,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AAKA,mBAAS,IAAI,GAAG,IAAI,OAAO,WAAW,QAAQ,IAAI,GAAG,KAAK;AACxD,gBAAI,KAAK,OAAO,WAAW,CAAC;AAC5B,gBAAI,OAAO,GAAG,CAAC;AACf,gBAAI,QAAQ,GAAG,CAAC;AAChB,gBAAI,WAAW,MAAM,MAAM,IAAI;AAC/B,gBAAI,SAAS,SAAS;AACtB,gBAAI,QAAQ,SAAS;AACrB,gBAAI,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG,MAAM,KAAK;AACjD,gBAAI,IAAI;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAIA,gBAAI,UAAU,WAAW,WAAW,CAAC,KAAK;AACxC;AAAA,gBACE;AAAA,gBACA,+BAA+B,KAAK,UAAU,MAAM;AAAA,cACtD;AACA,gBAAE,MAAM;AAAA,YACV;AACA,mBAAO,IAAI,WAAW,IAAI,IAAI;AAC9B,qBAAS,QAAQ,eAAe,CAAC;AAAA,UACnC;AACA,iBAAO,WAAW,SAAS;AAAA,QAC7B;AAEA,eAAO,IAAI,gBAAgB,CAAC,CAAC;AAG7B,eAAO,UAAU;AACjB,eAAO,KAAK,KAAK,OAAO,GAAG;AAC3B,iBAAS,QAAQ,aAAa,OAAO,GAAG;AACxC,YAAI,CAAC,aAAa;AAEhB,cAAI,CAAC,OAAO,YAAY,OAAO,QAAQ,YAAY,MAAM,UAAU;AACjE,mBAAO,QAAQ,EAAE;AAAA,UACnB,OAAO;AACL,mBAAO,QAAQ,EAAE;AAAA,UACnB;AACA,iBAAO,MAAM;AACb,iBAAO,UAAU;AAAA,QACnB;AACA,eAAO,aAAa,OAAO,cAAc;AACzC,eAAO,WAAW,SAAS;AAAA,MAC7B;AAEA,eAAS,SAAS,QAAQ;AACxB,YAAI,CAAC,OAAO,SAAS;AACnB,qBAAW,QAAQ,wBAAwB;AAC3C,iBAAO,YAAY;AACnB,iBAAO,QAAQ,EAAE;AACjB;AAAA,QACF;AAEA,YAAI,OAAO,QAAQ;AACjB,cAAI,OAAO,YAAY,UAAU;AAC/B,mBAAO,UAAU,OAAO,OAAO,UAAU;AACzC,mBAAO,UAAU;AACjB,mBAAO,QAAQ,EAAE;AACjB;AAAA,UACF;AACA,mBAAS,QAAQ,YAAY,OAAO,MAAM;AAC1C,iBAAO,SAAS;AAAA,QAClB;AAIA,YAAI,IAAI,OAAO,KAAK;AACpB,YAAI,UAAU,OAAO;AACrB,YAAI,CAAC,OAAO,QAAQ;AAClB,oBAAU,QAAQ,OAAO,SAAS,EAAE;AAAA,QACtC;AACA,YAAI,UAAU;AACd,eAAO,KAAK;AACV,cAAI,QAAQ,OAAO,KAAK,CAAC;AACzB,cAAI,MAAM,SAAS,SAAS;AAE1B,uBAAW,QAAQ,sBAAsB;AAAA,UAC3C,OAAO;AACL;AAAA,UACF;AAAA,QACF;AAGA,YAAI,IAAI,GAAG;AACT,qBAAW,QAAQ,4BAA4B,OAAO,OAAO;AAC7D,iBAAO,YAAY,OAAO,OAAO,UAAU;AAC3C,iBAAO,QAAQ,EAAE;AACjB;AAAA,QACF;AACA,eAAO,UAAU;AACjB,YAAIA,KAAI,OAAO,KAAK;AACpB,eAAOA,OAAM,GAAG;AACd,cAAI,MAAO,OAAO,MAAM,OAAO,KAAK,IAAI;AACxC,iBAAO,UAAU,OAAO,IAAI;AAC5B,mBAAS,QAAQ,cAAc,OAAO,OAAO;AAE7C,cAAI,IAAI,CAAC;AACT,mBAAS,KAAK,IAAI,IAAI;AACpB,cAAE,CAAC,IAAI,IAAI,GAAG,CAAC;AAAA,UACjB;AAEA,cAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,cAAI,OAAO,IAAI,SAAS,IAAI,OAAO,OAAO,IAAI;AAE5C,mBAAO,KAAK,IAAI,EAAE,EAAE,QAAQ,SAAU,GAAG;AACvC,kBAAI,IAAI,IAAI,GAAG,CAAC;AAChB,uBAAS,QAAQ,oBAAoB,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC;AAAA,YAC5D,CAAC;AAAA,UACH;AAAA,QACF;AACA,YAAI,MAAM,EAAG,QAAO,aAAa;AACjC,eAAO,UAAU,OAAO,cAAc,OAAO,aAAa;AAC1D,eAAO,WAAW,SAAS;AAC3B,eAAO,QAAQ,EAAE;AAAA,MACnB;AAEA,eAAS,YAAY,QAAQ;AAC3B,YAAI,SAAS,OAAO;AACpB,YAAI,WAAW,OAAO,YAAY;AAClC,YAAI;AACJ,YAAI,SAAS;AAEb,YAAI,OAAO,SAAS,MAAM,GAAG;AAC3B,iBAAO,OAAO,SAAS,MAAM;AAAA,QAC/B;AACA,YAAI,OAAO,SAAS,QAAQ,GAAG;AAC7B,iBAAO,OAAO,SAAS,QAAQ;AAAA,QACjC;AACA,iBAAS;AACT,YAAI,OAAO,OAAO,CAAC,MAAM,KAAK;AAC5B,cAAI,OAAO,OAAO,CAAC,MAAM,KAAK;AAC5B,qBAAS,OAAO,MAAM,CAAC;AACvB,kBAAM,SAAS,QAAQ,EAAE;AACzB,qBAAS,IAAI,SAAS,EAAE;AAAA,UAC1B,OAAO;AACL,qBAAS,OAAO,MAAM,CAAC;AACvB,kBAAM,SAAS,QAAQ,EAAE;AACzB,qBAAS,IAAI,SAAS,EAAE;AAAA,UAC1B;AAAA,QACF;AACA,iBAAS,OAAO,QAAQ,OAAO,EAAE;AACjC,YACE,MAAM,GAAG,KACT,OAAO,YAAY,MAAM,UACzB,MAAM,KACN,MAAM,WACN,CAAC,UAAU,GAAG,GACd;AACA,qBAAW,QAAQ,0BAA0B;AAC7C,iBAAO,MAAM,OAAO,SAAS;AAAA,QAC/B;AAEA,eAAO,OAAO,cAAc,GAAG;AAAA,MACjC;AAQA,eAAS,UAAU,KAAK;AACtB,eACE,QAAQ,KACR,QAAQ,MACR,QAAQ,MACP,OAAO,MAAQ,OAAO,SACtB,OAAO,SAAU,OAAO,SACxB,OAAO,SAAW,OAAO;AAAA,MAE9B;AAEA,eAAS,gBAAgB,QAAQ,GAAG;AAClC,YAAI,MAAM,KAAK;AACb,iBAAO,QAAQ,EAAE;AACjB,iBAAO,mBAAmB,OAAO;AAAA,QACnC,WAAW,CAAC,aAAa,CAAC,GAAG;AAG3B,qBAAW,QAAQ,kCAAkC;AACrD,iBAAO,WAAW;AAClB,iBAAO,QAAQ,EAAE;AAAA,QACnB;AAAA,MACF;AAEA,eAAS,OAAO,OAAO,GAAG;AACxB,YAAI,SAAS;AACb,YAAI,IAAI,MAAM,QAAQ;AACpB,mBAAS,MAAM,OAAO,CAAC;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAEA,eAAS,MAAM,OAAO;AACpB,YAAI,SAAS;AACb,YAAI,KAAK,OAAO;AACd,gBAAM,KAAK;AAAA,QACb;AACA,YAAI,OAAO,QAAQ;AACjB,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF;AACA,YAAI,UAAU,MAAM;AAClB,iBAAO,IAAI,MAAM;AAAA,QACnB;AACA,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,MAAM,SAAS;AAAA,QACzB;AACA,YAAI,IAAI;AACR,YAAI,IAAI;AACR,eAAO,MAAM;AACX,cAAI,OAAO,OAAO,GAAG;AACrB,iBAAO,IAAI;AAEX,cAAI,CAAC,GAAG;AACN;AAAA,UACF;AAEA,cAAI,OAAO,eAAe;AACxB,mBAAO;AACP,gBAAI,MAAM,MAAM;AACd,qBAAO;AACP,qBAAO,SAAS;AAAA,YAClB,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,kBAAQ,OAAO,OAAO;AAAA,YACpB,KAAK,EAAE;AACL,qBAAO,QAAQ,EAAE;AACjB,kBAAI,MAAM,UAAU;AAClB;AAAA,cACF;AACA,8BAAgB,QAAQ,CAAC;AACzB;AAAA,YAEF,KAAK,EAAE;AACL,8BAAgB,QAAQ,CAAC;AACzB;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,OAAO,WAAW,CAAC,OAAO,YAAY;AACxC,oBAAI,SAAS,IAAI;AACjB,uBAAO,KAAK,MAAM,OAAO,MAAM,KAAK;AAClC,sBAAI,OAAO,OAAO,GAAG;AACrB,sBAAI,KAAK,OAAO,eAAe;AAC7B,2BAAO;AACP,wBAAI,MAAM,MAAM;AACd,6BAAO;AACP,6BAAO,SAAS;AAAA,oBAClB,OAAO;AACL,6BAAO;AAAA,oBACT;AAAA,kBACF;AAAA,gBACF;AACA,uBAAO,YAAY,MAAM,UAAU,QAAQ,IAAI,CAAC;AAAA,cAClD;AACA,kBACE,MAAM,OACN,EAAE,OAAO,WAAW,OAAO,cAAc,CAAC,OAAO,SACjD;AACA,uBAAO,QAAQ,EAAE;AACjB,uBAAO,mBAAmB,OAAO;AAAA,cACnC,OAAO;AACL,oBACE,CAAC,aAAa,CAAC,MACd,CAAC,OAAO,WAAW,OAAO,aAC3B;AACA,6BAAW,QAAQ,iCAAiC;AAAA,gBACtD;AACA,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBACnB,OAAO;AACL,yBAAO,YAAY;AAAA,gBACrB;AAAA,cACF;AACA;AAAA,YAEF,KAAK,EAAE;AAEL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,UAAU;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,UAAU,MAAM;AACvB,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AAEL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AACjB,uBAAO,WAAW;AAAA,cACpB,WAAW,aAAa,CAAC,GAAG;AAAA,cAE5B,WAAW,QAAQ,WAAW,CAAC,GAAG;AAChC,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU;AAAA,cACnB,WAAW,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU;AAAA,cACnB,WAAW,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,eAAe,OAAO,eAAe;AAAA,cAC9C,OAAO;AACL,2BAAW,QAAQ,aAAa;AAEhC,oBAAI,OAAO,mBAAmB,IAAI,OAAO,UAAU;AACjD,sBAAI,MAAM,OAAO,WAAW,OAAO;AACnC,sBAAI,IAAI,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI;AAAA,gBACjC;AACA,uBAAO,YAAY,MAAM;AACzB,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,OAAO,WAAW,MAAM,MAAM;AAChC,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU;AACjB,uBAAO,WAAW;AAClB;AAAA,cACF;AAEA,kBACE,OAAO,WACP,OAAO,YAAY,QACnB,OAAO,UACP;AACA,uBAAO,QAAQ,EAAE;AACjB,uBAAO,WAAW,OAAO,OAAO,WAAW;AAC3C,uBAAO,WAAW;AAAA,cACpB,WAAW,QAAQ,KAAK,OAAO,WAAW,CAAC,GAAG;AAC5C,yBAAS,QAAQ,aAAa;AAC9B,uBAAO,QAAQ,EAAE;AACjB,uBAAO,WAAW;AAClB,uBAAO,QAAQ;AAAA,cACjB,WAAW,UAAU,KAAK,OAAO,WAAW,CAAC,GAAG;AAC9C,uBAAO,QAAQ,EAAE;AACjB,oBAAI,OAAO,WAAW,OAAO,SAAS;AACpC;AAAA,oBACE;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AACA,uBAAO,UAAU;AACjB,uBAAO,WAAW;AAAA,cACpB,WAAW,MAAM,KAAK;AACpB,yBAAS,QAAQ,qBAAqB,OAAO,QAAQ;AACrD,uBAAO,WAAW;AAClB,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,QAAQ,CAAC,GAAG;AACrB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,YAAY;AAAA,cACrB,OAAO;AACL,uBAAO,YAAY;AAAA,cACrB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,OAAO,GAAG;AAClB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,IAAI;AAAA,cACb;AACA,qBAAO,YAAY;AACnB;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AACjB,yBAAS,QAAQ,aAAa,OAAO,OAAO;AAC5C,uBAAO,UAAU;AAAA,cACnB,OAAO;AACL,uBAAO,WAAW;AAClB,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBACnB,WAAW,QAAQ,CAAC,GAAG;AACrB,yBAAO,QAAQ,EAAE;AACjB,yBAAO,IAAI;AAAA,gBACb;AAAA,cACF;AACA;AAAA,YAEF,KAAK,EAAE;AACL,qBAAO,WAAW;AAClB,kBAAI,MAAM,OAAO,GAAG;AAClB,uBAAO,IAAI;AACX,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,WAAW;AAClB,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,mBAAmB,OAAO;AAAA,cACnC,WAAW,QAAQ,CAAC,GAAG;AACrB,uBAAO,WAAW;AAClB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,IAAI;AAAA,cACb,OAAO;AACL,uBAAO,WAAW;AAAA,cACpB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,qBAAO,WAAW;AAClB,kBAAI,MAAM,OAAO,GAAG;AAClB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,IAAI;AAAA,cACb;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,WAAW;AAAA,cACpB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU,SAAS,OAAO,KAAK,OAAO,OAAO;AACpD,oBAAI,OAAO,SAAS;AAClB,2BAAS,QAAQ,aAAa,OAAO,OAAO;AAAA,gBAC9C;AACA,uBAAO,UAAU;AAAA,cACnB,OAAO;AACL,uBAAO,WAAW,MAAM;AACxB,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,2BAAW,QAAQ,mBAAmB;AAGtC,uBAAO,WAAW,OAAO;AACzB,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,OAAO,WAAW,OAAO,YAAY,MAAM;AACpD,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,SAAS,IAAI;AACjB,qBAAO,KAAK,MAAM,KAAK;AACrB,oBAAI,OAAO,OAAO,GAAG;AACrB,oBAAI,KAAK,OAAO,eAAe;AAC7B,yBAAO;AACP,sBAAI,MAAM,MAAM;AACd,2BAAO;AACP,2BAAO,SAAS;AAAA,kBAClB,OAAO;AACL,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cACF;AACA,qBAAO,SAAS,MAAM,UAAU,QAAQ,IAAI,CAAC;AAC7C,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,SAAS,MAAM;AACtB,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,oBAAI,OAAO,OAAO;AAChB,2BAAS,QAAQ,WAAW,OAAO,KAAK;AAAA,gBAC1C;AACA,yBAAS,QAAQ,cAAc;AAC/B,uBAAO,QAAQ;AACf,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,MAAM,KAAK;AACpB,uBAAO,SAAS;AAAA,cAClB,OAAO;AACL,uBAAO,SAAS,OAAO;AACvB,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,aAAa,CAAC,GAAG;AAC1B,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,gBAAgB;AAAA,cACzB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,CAAC,OAAO,gBAAgB,aAAa,CAAC,GAAG;AAC3C;AAAA,cACF,WAAW,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,gBAAgB;AAAA,cACzB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,sBAAM,kBAAkB;AAAA,kBACtB,MAAM,OAAO;AAAA,kBACb,MAAM,OAAO;AAAA,gBACf;AACA,+CAA+B,QAAQ,eAAe;AACtD,yBAAS,QAAQ,2BAA2B,eAAe;AAC3D,uBAAO,eAAe,OAAO,eAAe;AAC5C,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,uBAAO,gBAAgB,MAAM;AAC7B,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,QAAQ,UAAU,CAAC,GAAG;AACxB,uBAAO,WAAW;AAAA,cACpB,OAAO;AACL,uBAAO,MAAM;AACb,oBAAI,MAAM,KAAK;AACb,0BAAQ,MAAM;AAAA,gBAChB,WAAW,MAAM,KAAK;AACpB,yBAAO,QAAQ,EAAE;AAAA,gBACnB,OAAO;AACL,sBAAI,CAAC,aAAa,CAAC,GAAG;AACpB,+BAAW,QAAQ,+BAA+B;AAAA,kBACpD;AACA,yBAAO,QAAQ,EAAE;AAAA,gBACnB;AAAA,cACF;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,wBAAQ,QAAQ,IAAI;AACpB,yBAAS,MAAM;AAAA,cACjB,OAAO;AACL;AAAA,kBACE;AAAA,kBACA;AAAA,gBACF;AACA,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AAEL,kBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,cACF,WAAW,MAAM,KAAK;AACpB,wBAAQ,MAAM;AAAA,cAChB,WAAW,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,QAAQ,WAAW,CAAC,GAAG;AAChC,uBAAO,aAAa;AACpB,uBAAO,cAAc;AACrB,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,2BAAW,QAAQ,wBAAwB;AAAA,cAC7C;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,MAAM,KAAK;AACpB,2BAAW,QAAQ,yBAAyB;AAC5C,uBAAO,cAAc,OAAO;AAC5B,uBAAO,MAAM;AACb,wBAAQ,MAAM;AAAA,cAChB,WAAW,aAAa,CAAC,GAAG;AAC1B,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,QAAQ,UAAU,CAAC,GAAG;AAC/B,uBAAO,cAAc;AAAA,cACvB,OAAO;AACL,2BAAW,QAAQ,wBAAwB;AAAA,cAC7C;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,aAAa,CAAC,GAAG;AAC1B;AAAA,cACF,OAAO;AACL,2BAAW,QAAQ,yBAAyB;AAC5C,uBAAO,IAAI,WAAW,OAAO,UAAU,IAAI;AAC3C,uBAAO,cAAc;AACrB,yBAAS,QAAQ,eAAe;AAAA,kBAC9B,MAAM,OAAO;AAAA,kBACb,OAAO;AAAA,gBACT,CAAC;AACD,uBAAO,aAAa;AACpB,oBAAI,MAAM,KAAK;AACb,0BAAQ,MAAM;AAAA,gBAChB,WAAW,QAAQ,WAAW,CAAC,GAAG;AAChC,yBAAO,aAAa;AACpB,yBAAO,QAAQ,EAAE;AAAA,gBACnB,OAAO;AACL,6BAAW,QAAQ,wBAAwB;AAC3C,yBAAO,QAAQ,EAAE;AAAA,gBACnB;AAAA,cACF;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,cACF,WAAW,QAAQ,CAAC,GAAG;AACrB,uBAAO,IAAI;AACX,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,oBAAI,CAAC,OAAO,IAAI,yBAAyB;AACvC,wBAAM,QAAQ,0BAA0B;AAAA,gBAC1C;AACA,uBAAO,QAAQ,EAAE;AACjB,uBAAO,cAAc;AAAA,cACvB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,OAAO,GAAG;AAClB,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBACnB,OAAO;AACL,yBAAO,eAAe;AAAA,gBACxB;AACA;AAAA,cACF;AACA,qBAAO,MAAM;AACb,qBAAO,IAAI;AACX,qBAAO,QAAQ,EAAE;AACjB;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,aAAa,CAAC,GAAG;AACnB,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,MAAM,KAAK;AACpB,wBAAQ,MAAM;AAAA,cAChB,WAAW,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AAAA,cACnB,WAAW,QAAQ,WAAW,CAAC,GAAG;AAChC,2BAAW,QAAQ,kCAAkC;AACrD,uBAAO,aAAa;AACpB,uBAAO,cAAc;AACrB,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,2BAAW,QAAQ,wBAAwB;AAAA,cAC7C;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,CAAC,YAAY,CAAC,GAAG;AACnB,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBACnB,OAAO;AACL,yBAAO,eAAe;AAAA,gBACxB;AACA;AAAA,cACF;AACA,qBAAO,MAAM;AACb,kBAAI,MAAM,KAAK;AACb,wBAAQ,MAAM;AAAA,cAChB,OAAO;AACL,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,CAAC,OAAO,SAAS;AACnB,oBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,gBACF,WAAW,SAAS,WAAW,CAAC,GAAG;AACjC,sBAAI,OAAO,QAAQ;AACjB,2BAAO,UAAU,OAAO;AACxB,2BAAO,QAAQ,EAAE;AAAA,kBACnB,OAAO;AACL,+BAAW,QAAQ,iCAAiC;AAAA,kBACtD;AAAA,gBACF,OAAO;AACL,yBAAO,UAAU;AAAA,gBACnB;AAAA,cACF,WAAW,MAAM,KAAK;AACpB,yBAAS,MAAM;AAAA,cACjB,WAAW,QAAQ,UAAU,CAAC,GAAG;AAC/B,uBAAO,WAAW;AAAA,cACpB,WAAW,OAAO,QAAQ;AACxB,uBAAO,UAAU,OAAO,OAAO,UAAU;AACzC,uBAAO,UAAU;AACjB,uBAAO,QAAQ,EAAE;AAAA,cACnB,OAAO;AACL,oBAAI,CAAC,aAAa,CAAC,GAAG;AACpB,6BAAW,QAAQ,gCAAgC;AAAA,gBACrD;AACA,uBAAO,QAAQ,EAAE;AAAA,cACnB;AACA;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,cACF;AACA,kBAAI,MAAM,KAAK;AACb,yBAAS,MAAM;AAAA,cACjB,OAAO;AACL,2BAAW,QAAQ,mCAAmC;AAAA,cACxD;AACA;AAAA,YAEF,KAAK,EAAE;AAAA,YACP,KAAK,EAAE;AAAA,YACP,KAAK,EAAE;AACL,kBAAI;AACJ,kBAAI;AACJ,sBAAQ,OAAO,OAAO;AAAA,gBACpB,KAAK,EAAE;AACL,gCAAc,EAAE;AAChB,2BAAS;AACT;AAAA,gBAEF,KAAK,EAAE;AACL,gCAAc,EAAE;AAChB,2BAAS;AACT;AAAA,gBAEF,KAAK,EAAE;AACL,gCAAc,EAAE;AAChB,2BAAS;AACT;AAAA,cACJ;AAEA,kBAAI,MAAM,KAAK;AACb,oBAAI,eAAe,YAAY,MAAM;AACrC,oBACE,OAAO,IAAI,oBACX,CAAC,OAAO,OAAO,IAAI,YAAY,EAAE,SAAS,YAAY,GACtD;AACA,uBAAK,OAAO,eAAe,KAAK,OAAO,IAAI,gBAAgB;AACzD;AAAA,sBACE;AAAA,sBACA;AAAA,oBACF;AAAA,kBACF;AAEA,uBAAK,OAAO,eAAe,KAAK,OAAO,IAAI,gBAAgB;AACzD;AAAA,sBACE;AAAA,sBACA;AAAA,oBACF;AAAA,kBACF;AAEA,yBAAO,SAAS;AAChB,yBAAO,QAAQ;AACf,yBAAO,MAAM,YAAY;AACzB,yBAAO,eAAe;AAAA,gBACxB,OAAO;AACL,yBAAO,MAAM,KAAK;AAClB,yBAAO,SAAS;AAChB,yBAAO,QAAQ;AAAA,gBACjB;AAAA,cACF,WACE,QAAQ,OAAO,OAAO,SAAS,aAAa,aAAa,CAAC,GAC1D;AACA,uBAAO,UAAU;AAAA,cACnB,OAAO;AACL,2BAAW,QAAQ,kCAAkC;AACrD,uBAAO,MAAM,KAAK,MAAM,OAAO,SAAS;AACxC,uBAAO,SAAS;AAChB,uBAAO,QAAQ;AAAA,cACjB;AAEA;AAAA,YAEF,SAAoC;AAClC,oBAAM,IAAI,MAAM,QAAQ,oBAAoB,OAAO,KAAK;AAAA,YAC1D;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,YAAY,OAAO,qBAAqB;AACjD,4BAAkB,MAAM;AAAA,QAC1B;AACA,eAAO;AAAA,MACT;AAAA,MAEA;AAEA,UAAI,CAAC,OAAO,eAAe;AACzB;AAAC,SAAC,WAAY;AACZ,cAAI,qBAAqB,OAAO;AAChC,cAAI,QAAQ,KAAK;AACjB,cAAI,gBAAgB,WAAY;AAC9B,gBAAI,WAAW;AACf,gBAAI,YAAY,CAAC;AACjB,gBAAI;AACJ,gBAAI;AACJ,gBAAI,QAAQ;AACZ,gBAAI,SAAS,UAAU;AACvB,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,gBAAI,SAAS;AACb,mBAAO,EAAE,QAAQ,QAAQ;AACvB,kBAAI,YAAY,OAAO,UAAU,KAAK,CAAC;AACvC,kBACE,CAAC,SAAS,SAAS;AAAA,cACnB,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,MAAM,SAAS,MAAM,WACrB;AACA,sBAAM,WAAW,yBAAyB,SAAS;AAAA,cACrD;AACA,kBAAI,aAAa,OAAQ;AAEvB,0BAAU,KAAK,SAAS;AAAA,cAC1B,OAAO;AAGL,6BAAa;AACb,iCAAiB,aAAa,MAAM;AACpC,+BAAgB,YAAY,OAAS;AACrC,0BAAU,KAAK,eAAe,YAAY;AAAA,cAC5C;AACA,kBAAI,QAAQ,MAAM,UAAU,UAAU,SAAS,UAAU;AACvD,0BAAU,mBAAmB,MAAM,MAAM,SAAS;AAClD,0BAAU,SAAS;AAAA,cACrB;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAEA,cAAI,OAAO,gBAAgB;AACzB,mBAAO,eAAe,QAAQ,iBAAiB;AAAA,cAC7C,OAAO;AAAA,cACP,cAAc;AAAA,cACd,UAAU;AAAA,YACZ,CAAC;AAAA,UACH,OAAO;AACL,mBAAO,gBAAgB;AAAA,UACzB;AAAA,QACF,GAAG;AAAA,MACL;AAAA,IACF,GAAG,OAAOD,aAAY,cAAeA,SAAK,MAAM,CAAC,IAAKA,QAAO;AAAA;AAAA;;;ACz0D7D;AAAA,mCAAAE,UAAA;AAAA;AACA,KAAC,WAAW;AACV;AACA,MAAAA,SAAQ,WAAW,SAAS,KAAK;AAC/B,YAAI,IAAI,CAAC,MAAM,UAAU;AACvB,iBAAO,IAAI,UAAU,CAAC;AAAA,QACxB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IAEF,GAAG,KAAKA,QAAI;AAAA;AAAA;;;ACXZ;AAAA,0CAAAC,UAAA;AAAA;AACA,KAAC,WAAW;AACV;AACA,UAAI;AAEJ,oBAAc,IAAI,OAAO,eAAe;AAExC,MAAAA,SAAQ,YAAY,SAAS,KAAK;AAChC,eAAO,IAAI,YAAY;AAAA,MACzB;AAEA,MAAAA,SAAQ,qBAAqB,SAAS,KAAK;AACzC,eAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,MAClD;AAEA,MAAAA,SAAQ,cAAc,SAAS,KAAK;AAClC,eAAO,IAAI,QAAQ,aAAa,EAAE;AAAA,MACpC;AAEA,MAAAA,SAAQ,eAAe,SAAS,KAAK;AACnC,YAAI,CAAC,MAAM,GAAG,GAAG;AACf,gBAAM,MAAM,MAAM,IAAI,SAAS,KAAK,EAAE,IAAI,WAAW,GAAG;AAAA,QAC1D;AACA,eAAO;AAAA,MACT;AAEA,MAAAA,SAAQ,gBAAgB,SAAS,KAAK;AACpC,YAAI,oBAAoB,KAAK,GAAG,GAAG;AACjC,gBAAM,IAAI,YAAY,MAAM;AAAA,QAC9B;AACA,eAAO;AAAA,MACT;AAAA,IAEF,GAAG,KAAKA,QAAI;AAAA;AAAA;;;ACjCZ;AAAA,sCAAAC,UAAA;AAAA;AACA,KAAC,WAAW;AACV;AACA,UAAI,KAAK,UAAU,gBAAgB,QAAQ,SAAS,aAAa,YAAY,KAAK,cAChF,OAAO,SAAS,IAAI,IAAG;AAAE,eAAO,WAAU;AAAE,iBAAO,GAAG,MAAM,IAAI,SAAS;AAAA,QAAG;AAAA,MAAG,GAC/E,SAAS,SAAS,OAAO,QAAQ;AAAE,iBAAS,OAAO,QAAQ;AAAE,cAAI,QAAQ,KAAK,QAAQ,GAAG,EAAG,OAAM,GAAG,IAAI,OAAO,GAAG;AAAA,QAAG;AAAE,iBAAS,OAAO;AAAE,eAAK,cAAc;AAAA,QAAO;AAAE,aAAK,YAAY,OAAO;AAAW,cAAM,YAAY,IAAI,KAAK;AAAG,cAAM,YAAY,OAAO;AAAW,eAAO;AAAA,MAAO,GACzR,UAAU,CAAC,EAAE;AAEf,YAAM;AAEN,eAAS,QAAQ,QAAQ;AAEzB,YAAM;AAEN,mBAAa;AAEb,qBAAe,QAAQ,QAAQ,EAAE;AAEjC,iBAAW,mBAAsB;AAEjC,gBAAU,SAAS,OAAO;AACxB,eAAO,OAAO,UAAU,YAAa,SAAS,QAAS,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,MACvF;AAEA,oBAAc,SAASC,aAAY,MAAM,KAAK;AAC5C,YAAI,GAAG,KAAKC;AACZ,aAAK,IAAI,GAAG,MAAMD,YAAW,QAAQ,IAAI,KAAK,KAAK;AACjD,UAAAC,WAAUD,YAAW,CAAC;AACtB,iBAAOC,SAAQ,MAAM,GAAG;AAAA,QAC1B;AACA,eAAO;AAAA,MACT;AAEA,uBAAiB,SAAS,KAAK,KAAK,OAAO;AACzC,YAAI;AACJ,qBAAa,uBAAO,OAAO,IAAI;AAC/B,mBAAW,QAAQ;AACnB,mBAAW,WAAW;AACtB,mBAAW,aAAa;AACxB,mBAAW,eAAe;AAC1B,eAAO,OAAO,eAAe,KAAK,KAAK,UAAU;AAAA,MACnD;AAEA,MAAAF,SAAQ,UAAU,SAAS,YAAY;AACrC,eAAO,QAAQ,UAAU;AAEzB,iBAAS,OAAO,MAAM;AACpB,eAAK,qBAAqB,KAAK,KAAK,oBAAoB,IAAI;AAC5D,eAAK,cAAc,KAAK,KAAK,aAAa,IAAI;AAC9C,eAAK,QAAQ,KAAK,KAAK,OAAO,IAAI;AAClC,eAAK,eAAe,KAAK,KAAK,cAAc,IAAI;AAChD,eAAK,eAAe,KAAK,KAAK,cAAc,IAAI;AAChD,cAAI,KAAK,KAAK;AACd,cAAI,EAAE,gBAAgBA,SAAQ,SAAS;AACrC,mBAAO,IAAIA,SAAQ,OAAO,IAAI;AAAA,UAChC;AACA,eAAK,UAAU,CAAC;AAChB,gBAAM,SAAS,KAAK;AACpB,eAAK,OAAO,KAAK;AACf,gBAAI,CAAC,QAAQ,KAAK,KAAK,GAAG,EAAG;AAC7B,oBAAQ,IAAI,GAAG;AACf,iBAAK,QAAQ,GAAG,IAAI;AAAA,UACtB;AACA,eAAK,OAAO,MAAM;AAChB,gBAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,EAAG;AAC9B,oBAAQ,KAAK,GAAG;AAChB,iBAAK,QAAQ,GAAG,IAAI;AAAA,UACtB;AACA,cAAI,KAAK,QAAQ,OAAO;AACtB,iBAAK,QAAQ,WAAW,KAAK,QAAQ,UAAU;AAAA,UACjD;AACA,cAAI,KAAK,QAAQ,eAAe;AAC9B,gBAAI,CAAC,KAAK,QAAQ,mBAAmB;AACnC,mBAAK,QAAQ,oBAAoB,CAAC;AAAA,YACpC;AACA,iBAAK,QAAQ,kBAAkB,QAAQ,WAAW,SAAS;AAAA,UAC7D;AACA,eAAK,MAAM;AAAA,QACb;AAEA,eAAO,UAAU,eAAe,WAAW;AACzC,cAAI,OAAO;AACX,cAAI;AACF,gBAAI,KAAK,UAAU,UAAU,KAAK,QAAQ,WAAW;AACnD,sBAAQ,KAAK;AACb,mBAAK,YAAY;AACjB,mBAAK,YAAY,KAAK,UAAU,MAAM,KAAK;AAC3C,qBAAO,KAAK,UAAU,MAAM;AAAA,YAC9B,OAAO;AACL,sBAAQ,KAAK,UAAU,OAAO,GAAG,KAAK,QAAQ,SAAS;AACvD,mBAAK,YAAY,KAAK,UAAU,OAAO,KAAK,QAAQ,WAAW,KAAK,UAAU,MAAM;AACpF,mBAAK,YAAY,KAAK,UAAU,MAAM,KAAK;AAC3C,qBAAO,aAAa,KAAK,YAAY;AAAA,YACvC;AAAA,UACF,SAAS,QAAQ;AACf,kBAAM;AACN,gBAAI,CAAC,KAAK,UAAU,WAAW;AAC7B,mBAAK,UAAU,YAAY;AAC3B,qBAAO,KAAK,KAAK,GAAG;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAEA,eAAO,UAAU,eAAe,SAAS,KAAK,KAAK,UAAU;AAC3D,cAAI,EAAE,OAAO,MAAM;AACjB,gBAAI,CAAC,KAAK,QAAQ,eAAe;AAC/B,qBAAO,eAAe,KAAK,KAAK,QAAQ;AAAA,YAC1C,OAAO;AACL,qBAAO,eAAe,KAAK,KAAK,CAAC,QAAQ,CAAC;AAAA,YAC5C;AAAA,UACF,OAAO;AACL,gBAAI,EAAE,IAAI,GAAG,aAAa,QAAQ;AAChC,6BAAe,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAAA,YACrC;AACA,mBAAO,IAAI,GAAG,EAAE,KAAK,QAAQ;AAAA,UAC/B;AAAA,QACF;AAEA,eAAO,UAAU,QAAQ,WAAW;AAClC,cAAI,SAAS,SAAS,QAAQ;AAC9B,eAAK,mBAAmB;AACxB,eAAK,YAAY,IAAI,OAAO,KAAK,QAAQ,QAAQ;AAAA,YAC/C,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO,KAAK,QAAQ;AAAA,UACtB,CAAC;AACD,eAAK,UAAU,YAAY;AAC3B,eAAK,UAAU,UAAW,0BAAS,OAAO;AACxC,mBAAO,SAAS,OAAO;AACrB,oBAAM,UAAU,OAAO;AACvB,kBAAI,CAAC,MAAM,UAAU,WAAW;AAC9B,sBAAM,UAAU,YAAY;AAC5B,uBAAO,MAAM,KAAK,SAAS,KAAK;AAAA,cAClC;AAAA,YACF;AAAA,UACF,GAAG,IAAI;AACP,eAAK,UAAU,QAAS,0BAAS,OAAO;AACtC,mBAAO,WAAW;AAChB,kBAAI,CAAC,MAAM,UAAU,OAAO;AAC1B,sBAAM,UAAU,QAAQ;AACxB,uBAAO,MAAM,KAAK,OAAO,MAAM,YAAY;AAAA,cAC7C;AAAA,YACF;AAAA,UACF,GAAG,IAAI;AACP,eAAK,UAAU,QAAQ;AACvB,eAAK,mBAAmB,KAAK,QAAQ;AACrC,eAAK,eAAe;AACpB,kBAAQ,CAAC;AACT,oBAAU,KAAK,QAAQ;AACvB,oBAAU,KAAK,QAAQ;AACvB,eAAK,UAAU,YAAa,0BAAS,OAAO;AAC1C,mBAAO,SAAS,MAAM;AACpB,kBAAI,KAAK,UAAU,KAAK,cAAc;AACtC,oBAAM,CAAC;AACP,kBAAI,OAAO,IAAI;AACf,kBAAI,CAAC,MAAM,QAAQ,aAAa;AAC9B,sBAAM,KAAK;AACX,qBAAK,OAAO,KAAK;AACf,sBAAI,CAAC,QAAQ,KAAK,KAAK,GAAG,EAAG;AAC7B,sBAAI,EAAE,WAAW,QAAQ,CAAC,MAAM,QAAQ,YAAY;AAClD,wBAAI,OAAO,IAAI,CAAC;AAAA,kBAClB;AACA,6BAAW,MAAM,QAAQ,sBAAsB,YAAY,MAAM,QAAQ,qBAAqB,KAAK,WAAW,GAAG,GAAG,GAAG,IAAI,KAAK,WAAW,GAAG;AAC9I,iCAAe,MAAM,QAAQ,qBAAqB,YAAY,MAAM,QAAQ,oBAAoB,GAAG,IAAI;AACvG,sBAAI,MAAM,QAAQ,YAAY;AAC5B,0BAAM,aAAa,KAAK,cAAc,QAAQ;AAAA,kBAChD,OAAO;AACL,mCAAe,IAAI,OAAO,GAAG,cAAc,QAAQ;AAAA,kBACrD;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,OAAO,IAAI,MAAM,QAAQ,oBAAoB,YAAY,MAAM,QAAQ,mBAAmB,KAAK,IAAI,IAAI,KAAK;AAChH,kBAAI,MAAM,QAAQ,OAAO;AACvB,oBAAI,MAAM,QAAQ,QAAQ,IAAI;AAAA,kBAC5B,KAAK,KAAK;AAAA,kBACV,OAAO,KAAK;AAAA,gBACd;AAAA,cACF;AACA,qBAAO,MAAM,KAAK,GAAG;AAAA,YACvB;AAAA,UACF,GAAG,IAAI;AACP,eAAK,UAAU,aAAc,0BAAS,OAAO;AAC3C,mBAAO,WAAW;AAChB,kBAAI,OAAO,UAAU,KAAK,MAAM,UAAU,KAAK,UAAU,KAAK,GAAG;AACjE,oBAAM,MAAM,IAAI;AAChB,yBAAW,IAAI,OAAO;AACtB,kBAAI,CAAC,MAAM,QAAQ,oBAAoB,CAAC,MAAM,QAAQ,uBAAuB;AAC3E,uBAAO,IAAI,OAAO;AAAA,cACpB;AACA,kBAAI,IAAI,UAAU,MAAM;AACtB,wBAAQ,IAAI;AACZ,uBAAO,IAAI;AAAA,cACb;AACA,kBAAI,MAAM,MAAM,SAAS,CAAC;AAC1B,kBAAI,IAAI,OAAO,EAAE,MAAM,OAAO,KAAK,CAAC,OAAO;AACzC,2BAAW,IAAI,OAAO;AACtB,uBAAO,IAAI,OAAO;AAAA,cACpB,OAAO;AACL,oBAAI,MAAM,QAAQ,MAAM;AACtB,sBAAI,OAAO,IAAI,IAAI,OAAO,EAAE,KAAK;AAAA,gBACnC;AACA,oBAAI,MAAM,QAAQ,WAAW;AAC3B,sBAAI,OAAO,IAAI,IAAI,OAAO,EAAE,QAAQ,WAAW,GAAG,EAAE,KAAK;AAAA,gBAC3D;AACA,oBAAI,OAAO,IAAI,MAAM,QAAQ,kBAAkB,YAAY,MAAM,QAAQ,iBAAiB,IAAI,OAAO,GAAG,QAAQ,IAAI,IAAI,OAAO;AAC/H,oBAAI,OAAO,KAAK,GAAG,EAAE,WAAW,KAAK,WAAW,OAAO,CAAC,MAAM,kBAAkB;AAC9E,wBAAM,IAAI,OAAO;AAAA,gBACnB;AAAA,cACF;AACA,kBAAI,QAAQ,GAAG,GAAG;AAChB,oBAAI,OAAO,MAAM,QAAQ,aAAa,YAAY;AAChD,wBAAM,MAAM,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AACL,wBAAM,MAAM,QAAQ,aAAa,KAAK,MAAM,QAAQ,WAAW;AAAA,gBACjE;AAAA,cACF;AACA,kBAAI,MAAM,QAAQ,aAAa,MAAM;AACnC,wBAAQ,OAAQ,WAAW;AACzB,sBAAI,GAAG,KAAK;AACZ,4BAAU,CAAC;AACX,uBAAK,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AAC5C,2BAAO,MAAM,CAAC;AACd,4BAAQ,KAAK,KAAK,OAAO,CAAC;AAAA,kBAC5B;AACA,yBAAO;AAAA,gBACT,GAAG,EAAG,OAAO,QAAQ,EAAE,KAAK,GAAG;AAC/B,iBAAC,WAAW;AACV,sBAAI;AACJ,sBAAI;AACF,2BAAO,MAAM,MAAM,QAAQ,UAAU,OAAO,KAAK,EAAE,QAAQ,GAAG,GAAG;AAAA,kBACnE,SAAS,QAAQ;AACf,0BAAM;AACN,2BAAO,MAAM,KAAK,SAAS,GAAG;AAAA,kBAChC;AAAA,gBACF,GAAG;AAAA,cACL;AACA,kBAAI,MAAM,QAAQ,oBAAoB,CAAC,MAAM,QAAQ,cAAc,OAAO,QAAQ,UAAU;AAC1F,oBAAI,CAAC,MAAM,QAAQ,uBAAuB;AACxC,yBAAO,CAAC;AACR,sBAAI,MAAM,QAAQ,WAAW,KAAK;AAChC,yBAAK,MAAM,QAAQ,OAAO,IAAI,IAAI,MAAM,QAAQ,OAAO;AACvD,2BAAO,IAAI,MAAM,QAAQ,OAAO;AAAA,kBAClC;AACA,sBAAI,CAAC,MAAM,QAAQ,mBAAmB,MAAM,QAAQ,WAAW,KAAK;AAClE,yBAAK,MAAM,QAAQ,OAAO,IAAI,IAAI,MAAM,QAAQ,OAAO;AACvD,2BAAO,IAAI,MAAM,QAAQ,OAAO;AAAA,kBAClC;AACA,sBAAI,OAAO,oBAAoB,GAAG,EAAE,SAAS,GAAG;AAC9C,yBAAK,MAAM,QAAQ,QAAQ,IAAI;AAAA,kBACjC;AACA,wBAAM;AAAA,gBACR,WAAW,GAAG;AACZ,oBAAE,MAAM,QAAQ,QAAQ,IAAI,EAAE,MAAM,QAAQ,QAAQ,KAAK,CAAC;AAC1D,6BAAW,CAAC;AACZ,uBAAK,OAAO,KAAK;AACf,wBAAI,CAAC,QAAQ,KAAK,KAAK,GAAG,EAAG;AAC7B,mCAAe,UAAU,KAAK,IAAI,GAAG,CAAC;AAAA,kBACxC;AACA,oBAAE,MAAM,QAAQ,QAAQ,EAAE,KAAK,QAAQ;AACvC,yBAAO,IAAI,OAAO;AAClB,sBAAI,OAAO,KAAK,GAAG,EAAE,WAAW,KAAK,WAAW,OAAO,CAAC,MAAM,kBAAkB;AAC9E,0BAAM,IAAI,OAAO;AAAA,kBACnB;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,MAAM,SAAS,GAAG;AACpB,uBAAO,MAAM,aAAa,GAAG,UAAU,GAAG;AAAA,cAC5C,OAAO;AACL,oBAAI,MAAM,QAAQ,cAAc;AAC9B,wBAAM;AACN,wBAAM,CAAC;AACP,iCAAe,KAAK,UAAU,GAAG;AAAA,gBACnC;AACA,sBAAM,eAAe;AACrB,sBAAM,UAAU,QAAQ;AACxB,uBAAO,MAAM,KAAK,OAAO,MAAM,YAAY;AAAA,cAC7C;AAAA,YACF;AAAA,UACF,GAAG,IAAI;AACP,mBAAU,0BAAS,OAAO;AACxB,mBAAO,SAAS,MAAM;AACpB,kBAAI,WAAW;AACf,kBAAI,MAAM,MAAM,SAAS,CAAC;AAC1B,kBAAI,GAAG;AACL,kBAAE,OAAO,KAAK;AACd,oBAAI,MAAM,QAAQ,oBAAoB,MAAM,QAAQ,yBAAyB,MAAM,QAAQ,oBAAoB,MAAM,QAAQ,qBAAqB,KAAK,QAAQ,QAAQ,EAAE,EAAE,KAAK,MAAM,KAAK;AACzL,oBAAE,MAAM,QAAQ,QAAQ,IAAI,EAAE,MAAM,QAAQ,QAAQ,KAAK,CAAC;AAC1D,8BAAY;AAAA,oBACV,SAAS;AAAA,kBACX;AACA,4BAAU,OAAO,IAAI;AACrB,sBAAI,MAAM,QAAQ,WAAW;AAC3B,8BAAU,OAAO,IAAI,UAAU,OAAO,EAAE,QAAQ,WAAW,GAAG,EAAE,KAAK;AAAA,kBACvE;AACA,oBAAE,MAAM,QAAQ,QAAQ,EAAE,KAAK,SAAS;AAAA,gBAC1C;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF,GAAG,IAAI;AACP,eAAK,UAAU,SAAS;AACxB,iBAAO,KAAK,UAAU,UAAW,0BAAS,OAAO;AAC/C,mBAAO,SAAS,MAAM;AACpB,kBAAI;AACJ,kBAAI,OAAO,IAAI;AACf,kBAAI,GAAG;AACL,uBAAO,EAAE,QAAQ;AAAA,cACnB;AAAA,YACF;AAAA,UACF,GAAG,IAAI;AAAA,QACT;AAEA,eAAO,UAAU,cAAc,SAAS,KAAK,IAAI;AAC/C,cAAI;AACJ,cAAK,MAAM,QAAS,OAAO,OAAO,YAAY;AAC5C,iBAAK,GAAG,OAAO,SAAS,QAAQ;AAC9B,mBAAK,MAAM;AACX,qBAAO,GAAG,MAAM,MAAM;AAAA,YACxB,CAAC;AACD,iBAAK,GAAG,SAAS,SAASG,MAAK;AAC7B,mBAAK,MAAM;AACX,qBAAO,GAAGA,IAAG;AAAA,YACf,CAAC;AAAA,UACH;AACA,cAAI;AACF,kBAAM,IAAI,SAAS;AACnB,gBAAI,IAAI,KAAK,MAAM,IAAI;AACrB,mBAAK,KAAK,OAAO,IAAI;AACrB,qBAAO;AAAA,YACT;AACA,kBAAM,IAAI,SAAS,GAAG;AACtB,gBAAI,KAAK,QAAQ,OAAO;AACtB,mBAAK,YAAY;AACjB,2BAAa,KAAK,YAAY;AAC9B,qBAAO,KAAK;AAAA,YACd;AACA,mBAAO,KAAK,UAAU,MAAM,GAAG,EAAE,MAAM;AAAA,UACzC,SAAS,QAAQ;AACf,kBAAM;AACN,gBAAI,EAAE,KAAK,UAAU,aAAa,KAAK,UAAU,QAAQ;AACvD,mBAAK,KAAK,SAAS,GAAG;AACtB,qBAAO,KAAK,UAAU,YAAY;AAAA,YACpC,WAAW,KAAK,UAAU,OAAO;AAC/B,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAO,UAAU,qBAAqB,SAAS,KAAK;AAClD,iBAAO,IAAI,QAAS,0BAAS,OAAO;AAClC,mBAAO,SAASC,UAAS,QAAQ;AAC/B,qBAAO,MAAM,YAAY,KAAK,SAAS,KAAK,OAAO;AACjD,oBAAI,KAAK;AACP,yBAAO,OAAO,GAAG;AAAA,gBACnB,OAAO;AACL,yBAAOA,SAAQ,KAAK;AAAA,gBACtB;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF,GAAG,IAAI,CAAC;AAAA,QACV;AAEA,eAAO;AAAA,MAET,GAAG,MAAM;AAET,MAAAJ,SAAQ,cAAc,SAAS,KAAK,GAAG,GAAG;AACxC,YAAI,IAAI,SAAS;AACjB,YAAI,KAAK,MAAM;AACb,cAAI,OAAO,MAAM,YAAY;AAC3B,iBAAK;AAAA,UACP;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,sBAAU;AAAA,UACZ;AAAA,QACF,OAAO;AACL,cAAI,OAAO,MAAM,YAAY;AAC3B,iBAAK;AAAA,UACP;AACA,oBAAU,CAAC;AAAA,QACb;AACA,iBAAS,IAAIA,SAAQ,OAAO,OAAO;AACnC,eAAO,OAAO,YAAY,KAAK,EAAE;AAAA,MACnC;AAEA,MAAAA,SAAQ,qBAAqB,SAAS,KAAK,GAAG;AAC5C,YAAI,SAAS;AACb,YAAI,OAAO,MAAM,UAAU;AACzB,oBAAU;AAAA,QACZ;AACA,iBAAS,IAAIA,SAAQ,OAAO,OAAO;AACnC,eAAO,OAAO,mBAAmB,GAAG;AAAA,MACtC;AAAA,IAEF,GAAG,KAAKA,QAAI;AAAA;AAAA;;;AC1YZ;AAAA,sCAAAK,UAAA;AAAA;AACA,KAAC,WAAW;AACV;AACA,UAAI,SAAS,UAAU,QAAQ,YAC7B,SAAS,SAAS,OAAO,QAAQ;AAAE,iBAAS,OAAO,QAAQ;AAAE,cAAI,QAAQ,KAAK,QAAQ,GAAG,EAAG,OAAM,GAAG,IAAI,OAAO,GAAG;AAAA,QAAG;AAAE,iBAAS,OAAO;AAAE,eAAK,cAAc;AAAA,QAAO;AAAE,aAAK,YAAY,OAAO;AAAW,cAAM,YAAY,IAAI,KAAK;AAAG,cAAM,YAAY,OAAO;AAAW,eAAO;AAAA,MAAO,GACzR,UAAU,CAAC,EAAE;AAEf,iBAAW;AAEX,gBAAU;AAEV,eAAS;AAET,mBAAa;AAEb,MAAAA,SAAQ,WAAW,SAAS;AAE5B,MAAAA,SAAQ,aAAa;AAErB,MAAAA,SAAQ,mBAAmB,SAAS,YAAY;AAC9C,eAAO,iBAAiB,UAAU;AAElC,iBAAS,gBAAgB,SAAS;AAChC,eAAK,UAAU;AAAA,QACjB;AAEA,eAAO;AAAA,MAET,GAAG,KAAK;AAER,MAAAA,SAAQ,UAAU,QAAQ;AAE1B,MAAAA,SAAQ,SAAS,OAAO;AAExB,MAAAA,SAAQ,cAAc,OAAO;AAE7B,MAAAA,SAAQ,qBAAqB,OAAO;AAAA,IAEtC,GAAG,KAAKA,QAAI;AAAA;AAAA;;;ACtCZ;AAAA,yDAAAC,UAAAC,SAAA;AAAA;AAAA,QAAM,eAAe,QAAQ,QAAQ;AACrC,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,QAAM,gBAAN,MAAoB;AAAA,MAClB,YAAa,QAAQ,OAAO;AAC1B,aAAK,WAAW;AAChB,aAAK,KAAK,CAAC,QAAQ;AACjB,gBAAM,EAAE,MAAM,WAAW,OAAO,IAAI;AACpC,cAAI,MAAM,QAAQ,IAAI,YAAY,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAChE;AAAA,UACF;AACA,cAAI,cAAc,OAAO,WAAW;AAClC,oBAAQ,MAAM,0BAA0B,SAAS,eAAe,IAAI,SAAS,IAAI,OAAO,IAAI,cAAc,OAAO,SAAS,GAAG;AAC7H;AAAA,UACF;AACA,gBAAM,KAAK,MAAM,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AA8BA,QAAM,iBAAN,MAAM,wBAAuB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAKxC,YAAa,MAAM,QAAQ;AACzB,cAAM;AACN,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,cAAc,CAAC;AACpB,aAAK,WAAW,CAAC;AACjB,aAAK,WAAW,CAAC;AACjB,aAAK,aAAa,CAAC;AAEnB,cAAM,kBAAkB,CAAC,cAAc;AACrC,gBAAM,SAAS,KAAK,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,SAAS;AAC7D,cAAI,CAAC,QAAQ;AACX,mBAAO,CAAC,MAAM,IAAI;AAAA,UACpB;AAEA,gBAAM,gBAAgB,KAAK,UAAU;AAAA,YACnC,MAAM,KAAK,QAAQ;AAAA,YACnB,WAAW,KAAK;AAAA,YAChB,QAAQ;AAAA,UACV,CAAC;AAED,iBAAO,CAAC,QAAQ,aAAa;AAAA,QAC/B;AAEA,aAAK,GAAG,kBAAkB,CAAC,WAAW,aAAa;AACjD,gBAAM,CAAC,QAAQ,aAAa,IAAI,gBAAgB,SAAS;AAEzD,cAAI,CAAC,QAAQ;AACX;AAAA,UACF;AAEA,gBAAM,gBAAgB,KAAK,kBAAkB,MAAM;AAEnD,cAAI,cAAc,YAAY,GAAG;AAC/B;AAAA,UACF;AAEA,wBAAc,YAAY;AAC1B,cAAI,cAAc,WAAW,GAAG;AAC9B;AAAA,UACF;AAEA,eAAK,QAAQ,IAAI,aAAa,KAAK,uBAAuB,SAAS,CAAC,EACjE,MAAM,WAAS;AACd,iBAAK,QAAQ,IAAI,KAAK,SAAS,KAAK;AAAA,UACtC,CAAC;AACH,eAAK,QAAQ,IAAI,SAAS,eAAe,eAAe,cAAc,EAAE;AAAA,QAC1E,CAAC;AAED,aAAK,GAAG,eAAe,CAAC,WAAW,aAAa;AAC9C,gBAAM,CAAC,QAAQ,aAAa,IAAI,gBAAgB,SAAS;AAEzD,cAAI,CAAC,QAAQ;AACX;AAAA,UACF;AAEA,gBAAM,gBAAgB,KAAK,kBAAkB,MAAM;AAEnD,cAAI,cAAc,WAAW,GAAG;AAC9B,0BAAc,YAAY;AAC1B;AAAA,UACF;AAEA,wBAAc,WAAW;AAEzB,eAAK,QAAQ,IAAI,UAAU,KAAK,uBAAuB,SAAS,CAAC,EAC9D,MAAM,WAAS;AACd,iBAAK,QAAQ,IAAI,KAAK,SAAS,KAAK;AAAA,UACtC,CAAC;AACH,eAAK,QAAQ,IAAI,SAAS,GAAG,eAAe,cAAc,EAAE;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,MAEA,uBAAwB,WAAW;AACjC,eAAO,wBAAwB,KAAK,QAAQ,IAAI,eAAe,KAAK,KAAK,WAAW,KAAK,QAAQ,IAAI,aAAa,SAAS;AAAA,MAC7H;AAAA,MAEA,kBAAmB,QAAQ;AACzB,YAAI,KAAK,WAAW,OAAO,IAAI,GAAG;AAChC,iBAAO,KAAK,WAAW,OAAO,IAAI;AAAA,QACpC;AAEA,aAAK,WAAW,OAAO,IAAI,IAAI,IAAI,cAAc,QAAQ,IAAI;AAC7D,eAAO,KAAK,WAAW,OAAO,IAAI;AAAA,MACpC;AAAA,MAEA,OAAO,SAAU,QAAQ,KAAK;AAC5B,YAAI,EAAE,OAAO,QAAQ,CAAC,qBAAqB,IAAI,EAAE,IAAI,GAAG;AACtD,iBAAO;AAAA,QACT;AAEA,cAAM,OAAO,IAAI,EAAE;AACnB,cAAM,QAAQ,IAAI,gBAAe,MAAM,MAAM;AAE7C,YAAI,MAAM,QAAQ,IAAI,QAAQ,GAAG;AAC/B,qBAAW,KAAK,IAAI,UAAU;AAE5B,gBAAI,OAAO,GAAG;AACZ,oBAAM,YAAY,KAAK,EAAE,CAAC;AAAA,YAC5B;AAAA,UACF;AAAA,QACF;AAEA,YAAI,MAAM,QAAQ,IAAI,MAAM,GAAG;AAC7B,qBAAW,KAAK,IAAI,QAAQ;AAC1B,gBAAI,EAAE,OAAO,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,GAAG;AAC/C;AAAA,YACF;AACA,kBAAM,SAAS;AAAA,cACb,MAAM,EAAE,EAAE;AAAA,cACV,WAAW;AAAA,YACb;AAEA,gBAAI,MAAM,QAAQ,EAAE,GAAG,GAAG;AACxB,yBAAW,KAAK,EAAE,KAAK;AACrB,oBAAI,OAAO,KAAK,UAAU,EAAE,GAAG;AAE7B,yBAAO,aAAa,EAAE,EAAE;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF;AAEA,kBAAM,SAAS,KAAK,MAAM;AAAA,UAC5B;AAAA,QACF;AAEA,YAAI,MAAM,QAAQ,IAAI,MAAM,GAAG;AAC7B,qBAAW,KAAK,IAAI,QAAQ;AAC1B,gBAAI,EAAE,OAAO,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,GAAG;AAC/C;AAAA,YACF;AACA,kBAAM,SAAS;AAAA,cACb,MAAM,EAAE,EAAE;AAAA,cACV,aAAa;AAAA,cACb,cAAc;AAAA,YAChB;AAEA,gBAAI,MAAM,QAAQ,EAAE,GAAG,GAAG;AACxB,yBAAW,KAAK,EAAE,KAAK;AACrB,oBAAI,EAAE,OAAO,MAAM,OAAO,EAAE,EAAE,SAAS,UAAU;AAC/C;AAAA,gBACF;AACA,sBAAM,MAAM,EAAE;AACd,oBAAI,IAAI,cAAc,MAAM;AAC1B,yBAAO,eAAe,IAAI;AAAA,gBAC5B,WAAW,IAAI,cAAc,OAAO;AAClC,yBAAO,gBAAgB,IAAI;AAAA,gBAC7B;AAAA,cACF;AAAA,YACF;AAGA,kBAAM,SAAS,KAAK,MAAM;AAE1B,kBAAM,OAAO,IAAI,IAAI,YAAa,MAAM;AACtC,oBAAM,UAAU;AAAA,gBACd;AAAA,gBACA,OAAO;AAAA,gBACP,OAAO;AAAA,gBACP,OAAO;AAAA,cACT,EAAE,OAAO,IAAI;AACb,qBAAO,OAAO,YAAY,MAAM,QAAQ,OAAO;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;AClOjB;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,EAAE,eAAe,IAAI;AAC3B,QAAM,iBAAiB;AACvB,QAAM,EAAE,SAAAC,SAAQ,IAAI;AACpB,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAiBJ,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKhB,YAAa,KAAK,MAAMC,OAAM;AAC5B,2BAAmB,IAAI;AACvB,8BAAsBA,KAAI;AAM1B,aAAK,MAAM;AAMX,aAAK,OAAO;AAMZ,aAAK,OAAOA;AAOZ,aAAK,QAAQ,CAAC;AAQd,aAAK,aAAa,CAAC;AACnB,aAAK,UAAU,IAAI,OAAO,OAAO;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAc,MAAM;AAClB,YAAI,CAAC,OAAO,KAAK,KAAK,UAAU,EAAE,SAAS,IAAI,GAAG;AAChD,gBAAM,IAAI,MAAM,wCAAwC,IAAI,EAAE;AAAA,QAChE;AACA,eAAO,KAAK,WAAW,IAAI;AAAA,MAC7B;AAAA,MAEA,SAAU,KAAK;AACb,cAAM,OAAO,IAAI;AAEjB,YAAI,MAAM,QAAQ,KAAK,IAAI,GAAG;AAC5B,qBAAW,KAAK,KAAK,MAAM;AACzB,gBAAI,EAAE,OAAO,IAAI;AACf;AAAA,YACF;AACA,kBAAM,OAAO,EAAE,EAAE;AACjB,kBAAMA,QAAO,GAAG,KAAK,IAAI,IAAI,IAAI;AACjC,gBAAI,kBAAkBA,KAAI,GAAG;AAC3B,mBAAK,MAAM,KAAKA,KAAI;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,MAAM,QAAQ,KAAK,SAAS,GAAG;AACjC,qBAAW,KAAK,KAAK,WAAW;AAC9B,kBAAM,QAAQ,eAAe,SAAS,MAAM,CAAC;AAC7C,gBAAI,UAAU,MAAM;AAClB,mBAAK,WAAW,MAAM,KAAK,IAAI;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAO,KAAK;AACV,eAAO,IAAI,QAAQ,CAACC,UAAS,WAAW;AACtC,cAAI,KAAK;AACP,iBAAK,QAAQ,YAAY,KAAK,CAAC,KAAK,SAAS;AAC3C,kBAAI,KAAK;AACP,uBAAO,OAAO,GAAG;AAAA,cACnB;AACA,mBAAK,SAAS,IAAI;AAElB,oBAAM,mBAAmB,IAAIF,SAAQ;AAAA,gBACnC,aAAa;AAAA,gBACb,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,QAAQ;AAAA,gBACR,WAAW;AAAA,gBACX,MAAM,CAAC,KAAK,IAAI;AAAA,cAClB,CAAC;AAED,mBAAK,IAAI,KAAK,gBAAgB,EAC3B,KAAK,CAAC,QAAQ;AACb,qBAAK,IAAI,YAAY,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AAC5C,gBAAAE,SAAQ,IAAI;AAAA,cACd,CAAC,EACA,MAAM,CAACC,SAAQ;AACd,oBAAIA,KAAI,SAAS,6CAA6C;AAAE,yBAAOD,SAAQ,IAAI;AAAA,gBAAG;AACtF,uBAAO,OAAOC,IAAG;AAAA,cACnB,CAAC;AAAA,YACL,CAAC;AAAA,UACH,OAAO;AACL,kBAAM,oBAAoB,IAAIH,SAAQ;AAAA,cACpC,aAAa,KAAK;AAAA,cAClB,MAAM,KAAK;AAAA,cACX,WAAW;AAAA,cACX,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,MAAM,CAAC;AAAA,YACT,CAAC;AAED,iBAAK,IAAI,KAAK,iBAAiB,EAC5B,KAAK,CAAC,QAAQ;AACb,oBAAMI,OAAM,IAAI,KAAK,CAAC;AACtB,mBAAK,QAAQ,YAAYA,MAAK,CAAC,KAAK,SAAS;AAC3C,oBAAI,KAAK;AACP,yBAAO,OAAO,GAAG;AAAA,gBACnB;AACA,qBAAK,SAAS,IAAI;AAClB,gBAAAF,SAAQ,IAAI;AAAA,cACd,CAAC;AAAA,YACH,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,qBAAO,OAAO,GAAG;AAAA,YACnB,CAAC;AAAA,UACL;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,YAAa,OAAO,QAAQ,aAAa,iBAAiB,MAAM;AAC9D,eAAO,IAAI,QAAQ,CAACA,UAAS,WAAW;AACtC,iBAAO,QAAQ,CAAC;AAEhB,gBAAM,oBAAoB,IAAIF,SAAQ;AAAA,YACpC,aAAa,KAAK;AAAA,YAClB,WAAW;AAAA,YACX,MAAM,KAAK;AAAA,YACX;AAAA,YACA,WAAW;AAAA,YACX,MAAM;AAAA,UACR,CAAC;AAED,eAAK,IAAI,KAAK,iBAAiB,EAC5B,KAAK,CAAC,QAAQ;AACb,kBAAM,mBAAmB,eAAe,YAAY;AACpD,gBAAI,iBAAiB,WAAW,GAAG;AACjC,cAAAE,SAAQ,IAAI;AACZ;AAAA,YACF;AACA,gBAAI,iBAAiB,WAAW,GAAG;AACjC,cAAAA,SAAQ,IAAI,KAAK,CAAC,CAAC;AAAA,YACrB,OAAO;AACL,cAAAA,SAAQ,IAAI,IAAI;AAAA,YAClB;AAAA,UACF,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,mBAAO,OAAO,GAAG;AAAA,UACnB,CAAC;AAAA,QACL,CAAC;AAAA,MACH;AAAA,IACF;AAEA,IAAAH,QAAO,UAAU;AAAA;AAAA;;;ACxMjB;AAAA,sCAAAM,UAAAC,SAAA;AAAA;AAAA,QAAM,eAAe,QAAQ,QAAQ,EAAE;AACvC,QAAMC,aAAY;AAClB,QAAM,eAAe;AACrB,QAAM,EAAE,UAAU,IAAI;AACtB,QAAM,EAAE,SAAAC,SAAQ,IAAI;AACpB,QAAM,gBAAgB;AACtB,QAAM,SAAS;AAEf,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAID,WAAU;AAEd,QAAM;AAAA,MACJ;AAAA,IACF,IAAIA,WAAU;AAEd,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,QAAM,cAAc;AAEpB,QAAM,YAAY;AA2BlB,QAAM,aAAN,cAAyB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMpC,YAAa,MAAM;AACjB,cAAM;AACN,aAAK,WAAW,IAAI,OAAO,QAAQ,EAAE,UAAU,KAAK,CAAC;AACrD,aAAK,cAAc;AACnB,aAAK,UAAU;AACf,aAAK,wBAAwB,CAAC;AAC9B,aAAK,WAAW,IAAI,aAAa;AACjC,aAAK,cAAc,CAAC;AACpB,aAAK,kBAAkB,CAAC;AACxB,aAAK,kBAAkB,CAAC;AAIxB,aAAK,cAAc,CAAC;AAQpB,aAAK,OAAO;AAEZ,cAAM,gBAAgB,CAAC,QAAQ;AAG7B,cAAI,KAAK,QAAQ,IAAI,aAAa;AAChC,gBAAI,IAAI,YAAY,CAAC,MAAM,OAAO,IAAI,gBAAgB,KAAK,MAAM;AAC/D;AAAA,YACF;AACA,gBAAI,KAAK,YAAY,IAAI,WAAW,KAC9B,KAAK,YAAY,IAAI,WAAW,MAAM,KAAK,MAAM;AACrD;AAAA,YACF;AAAA,UACF;AAEA,cAAI,IAAI,SAAS,iBACf,IAAI,SAAS,OAAO;AACpB,kBAAM,UAAU,KAAK,sBAAsB,IAAI,WAAW;AAC1D,gBAAI,SAAS;AACX,qBAAO,KAAK,sBAAsB,IAAI,WAAW;AACjD,sBAAQ,GAAG;AAAA,YACb;AAAA,UACF,WAAW,IAAI,SAAS,QAAQ;AAE9B,kBAAM,EAAE,QAAQ,MAAAE,OAAM,OAAO,OAAO,IAAI;AACxC,gBAAI,WAAW,0BACbA,UAAS,2BACT,UAAU,0BACV,WAAW,oBAAoB;AAC/B,oBAAM,OAAO,IAAI,KAAK,CAAC;AACvB,oBAAM,WAAW,IAAI,KAAK,CAAC;AAC3B,kBAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AACzB,qBAAK,YAAY,IAAI,IAAI;AAAA,cAC3B;AAAA,YACF;AAEA,kBAAM,UAAU,KAAK,UAAU;AAAA,cAC7B,MAAM,IAAI;AAAA,cACV,WAAW,IAAI;AAAA,cACf,QAAQ,IAAI;AAAA,YACd,CAAC;AACD,iBAAK,SAAS,KAAK,SAAS,GAAG;AAAA,UACjC,OAAO;AAEL,gBAAI,UAAU;AAEd,uBAAW,WAAW,KAAK,iBAAiB;AAE1C,wBAAU,QAAQ,GAAG;AACrB,kBAAI,SAAS;AACX;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,CAAC,SAAS;AACZ,wBAAU,aAAa,KAAK,IAAI;AAAA,YAClC;AAEA,gBAAI,CAAC,SAAS;AACZ,mBAAK,KAAKD,SAAQ;AAAA,gBAAS;AAAA,gBACzB;AAAA,gBACA,WAAW,IAAI,MAAM,mBAAmB,IAAI,aAAa,QAAQ;AAAA,cAAkB,CAAC;AAAA,YACxF;AAAA,UACF;AAAA,QACF;AAEA,aAAK,GAAG,WAAW,CAAC,QAAQ;AAC1B,cAAI;AAEF,iBAAK,KAAK,WAAW,GAAG;AACxB,0BAAc,GAAG;AAAA,UACnB,SAAS,GAAG;AACV,iBAAK,KAAKA,SAAQ,SAAS,KAAK,8BAA8B;AAAA,EAA2C,EAAE,KAAK,EAAE,CAAC;AAAA,UACrH;AAAA,QACF,CAAC;AAED,aAAK,GAAG,SAAS,CAAC,QAAQ;AAExB,eAAK,KAAK,SAAS,GAAG;AAAA,QACxB,CAAC;AAED,cAAM,eAAe,IAAIA,SAAQ;AAAA,UAC/B,MAAM;AAAA,UACN,aAAa;AAAA,UACb,WAAW;AAAA,UACX,QAAQ;AAAA,QACV,CAAC;AAED,aAAK,KAAK,YAAY,EACnB,KAAK,CAAC,QAAQ;AACb,eAAK,OAAO,IAAI,KAAK,CAAC;AACtB,eAAK,KAAK,SAAS;AAAA,QACrB,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,eAAK,KAAK,SAAS,GAAG;AACtB,gBAAM,IAAI,MAAM,GAAG;AAAA,QACrB,CAAC;AAAA,MACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,eAAgB,MAAMC,OAAM,KAAK;AAC/B,cAAM,MAAM,IAAI,YAAY,MAAM,MAAMA,KAAI;AAC5C,eAAO,IAAI,MAAM,GAAG;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,YAAa,MAAM,OAAO;AACxB,gBAAQ,SAAS;AACjB,eAAO,IAAI,QAAQ,CAACC,UAAS,WAAW;AACtC,6BAAmB,IAAI;AACvB,gBAAM,qBAAqB,IAAIF,SAAQ;AAAA,YACrC,MAAM;AAAA,YACN,aAAa;AAAA,YACb,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,MAAM,CAAC,MAAM,KAAK;AAAA,UACpB,CAAC;AACD,eAAK,KAAK,kBAAkB,EACzB,KAAK,CAAC,QAAQ;AACb,mBAAOE,SAAQ,IAAI,KAAK,CAAC,CAAC;AAAA,UAC5B,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,mBAAO,OAAO,GAAG;AAAA,UACnB,CAAC;AAAA,QACL,CAAC;AAAA,MACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAa,MAAM;AACjB,eAAO,IAAI,QAAQ,CAACA,UAAS,WAAW;AACtC,gBAAM,MAAM,IAAIF,SAAQ;AAAA,YACtB,MAAM;AAAA,YACN,aAAa;AAAA,YACb,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,MAAM,CAAC,IAAI;AAAA,UACb,CAAC;AACD,eAAK,KAAK,GAAG,EACV,KAAK,CAAC,UAAU;AACf,mBAAOE,SAAQ,MAAM,KAAK,CAAC,CAAC;AAAA,UAC9B,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,mBAAO,OAAO,GAAG;AAAA,UACnB,CAAC;AAAA,QACL,CAAC;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,aAAc;AACZ,aAAK,YAAY,OAAO,IAAI;AAC5B,aAAK,SAAS,mBAAmB;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAa;AACX,eAAO,KAAK;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAqBA,iBAAkB,IAAI;AACpB,aAAK,gBAAgB,KAAK,EAAE;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,oBAAqB,IAAI;AACvB,iBAAS,IAAI,GAAG,IAAI,KAAK,gBAAgB,QAAQ,EAAE,GAAG;AACpD,cAAI,KAAK,gBAAgB,CAAC,MAAM,IAAI;AAClC,iBAAK,gBAAgB,OAAO,GAAG,CAAC;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmBA,KAAM,KAAK;AACT,eAAO,IAAI,QAAQ,CAACA,UAAS,WAAW;AACtC,cAAI,EAAE,eAAeF,WAAU;AAC7B,kBAAM,IAAI,MAAM,gEAAgE;AAAA,UAClF;AACA,cAAI,IAAI,SAAS,aAAa;AAC5B,kBAAM,IAAI,MAAM,4DAA4D;AAAA,UAC9E;AACA,cAAI,IAAI,WAAW,QAAQ,IAAI,OAAO;AACpC,gBAAI,SAAS,KAAK,UAAU;AAAA,UAC9B;AACA,cAAI,QAAQ;AACZ,cAAI,IAAI,QAAQ,mBAAmB;AACjC,YAAAE,SAAQ,IAAI;AAAA,UACd,OAAO;AACL,iBAAK,sBAAsB,IAAI,MAAM,IAAI,CAAC,UAAU;AAClD,mBAAK,YAAY,IAAI,WAAW,IAAI,MAAM;AAC1C,kBAAI,MAAM,SAAS,OAAO;AACxB,uBAAO,OAAO,IAAI,UAAU,MAAM,WAAW,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC;AAAA,cACpE,OAAO;AACL,uBAAOA,SAAQ,KAAK;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AACA,eAAK,YAAY,QAAQ,GAAG;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,KAAM,KAAK;AACT,YAAI,EAAE,eAAeF,WAAU;AAC7B,gBAAM,IAAI,MAAM,gEAAgE;AAAA,QAClF;AACA,YAAI,IAAI,WAAW,QAAQ,IAAI,OAAO;AACpC,cAAI,SAAS,KAAK,UAAU;AAAA,QAC9B;AACA,aAAK,YAAY,QAAQ,GAAG;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAQC,OAAM,OAAO;AACnB,cAAM,MAAM,KAAK,kBAAkBA,KAAI;AACvC,YAAI,aAAa,KAAK;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,SAAUA,OAAM,OAAO;AACrB,gBAAQ,SAAS;AACjB,YAAI,UAAU,MAAM;AAClB,eAAK,qBAAqBA,KAAI;AAAA,QAChC,OAAO;AACL,gBAAM,MAAM,KAAK,kBAAkBA,KAAI;AACvC,cAAI,gBAAgB,KAAK;AACzB,cAAI,CAAC,IAAI,WAAW,QAAQ;AAC1B,iBAAK,qBAAqBA,KAAI;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,YAAaA,OAAM;AACjB,8BAAsBA,KAAI;AAC1B,cAAM,MAAM;AAAA,UACV,MAAM;AAAA,YACJ,MAAM,CAAC;AAAA,UACT;AAAA,QACF;AAEA,YAAI,KAAK,gBAAgBA,KAAI,GAAG;AAC9B,cAAI,KAAK,YAAY,KAAK,gBAAgBA,KAAI,EAAE,WAAW;AAAA,QAC7D;AAEA,cAAM,YAAYA,MAAK,MAAM,GAAG,EAAE,OAAO,OAAK,CAAC;AAE/C,cAAME,YAAW,oBAAI,IAAI;AAEzB,mBAAW,OAAO,OAAO,KAAK,KAAK,eAAe,GAAG;AACnD,gBAAM,WAAW,IAAI,MAAM,GAAG,EAAE,OAAO,OAAK,CAAC;AAC7C,cAAI,SAAS,UAAU,UAAU,QAAQ;AACvC;AAAA,UACF;AACA,cAAI,UAAU,MAAM,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG;AAChD,YAAAA,UAAS,IAAI,SAAS,UAAU,MAAM,CAAC;AAAA,UACzC;AAAA,QACF;AAEA,mBAAW,SAASA,WAAU;AAC5B,cAAI,KAAK,KAAK,KAAK;AAAA,YACjB,GAAG;AAAA,cACD,MAAM;AAAA,YACR;AAAA,UACF,CAAC;AAAA,QACH;AAEA,eAAO,YAAY,KAAK,SAAS,YAAY,GAAG;AAAA,MAClD;AAAA,MAEA,kBAAmBF,OAAM;AACvB,8BAAsBA,KAAI;AAC1B,YAAI,CAAC,KAAK,gBAAgBA,KAAI,GAAG;AAC/B,eAAK,gBAAgBA,KAAI,IAAI,IAAI,cAAcA,OAAM,IAAI;AAAA,QAC3D;AACA,eAAO,KAAK,gBAAgBA,KAAI;AAAA,MAClC;AAAA,MAEA,qBAAsBA,OAAM;AAC1B,8BAAsBA,KAAI;AAC1B,YAAI,KAAK,gBAAgBA,KAAI,GAAG;AAC9B,gBAAM,MAAM,KAAK,gBAAgBA,KAAI;AACrC,qBAAW,KAAK,OAAO,KAAK,IAAI,UAAU,GAAG;AAC3C,gBAAI,gBAAgB,IAAI,WAAW,CAAC,CAAC;AAAA,UACvC;AACA,iBAAO,KAAK,gBAAgBA,KAAI;AAAA,QAClC;AAAA,MACF;AAAA,MAEA,UAAW,OAAO;AAChB,YAAI,OAAO,UAAU,eAAe,KAAK,OAAO,KAAK,WAAW,GAAG;AACjE,eAAK,YAAY,KAAK,KAAK;AAC3B,iBAAO,QAAQ,QAAQ;AAAA,QACzB;AAEA,aAAK,YAAY,KAAK,IAAI;AAG1B,cAAM,MAAM,IAAID,SAAQ;AAAA,UACtB,MAAM;AAAA,UACN,aAAa;AAAA,UACb,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,MAAM,CAAC,KAAK;AAAA,QACd,CAAC;AACD,eAAO,KAAK,KAAK,GAAG;AAAA,MACtB;AAAA,MAEA,aAAc,OAAO;AACnB,YAAI,CAAC,KAAK,YAAY,OAAO,UAAU;AACrC,iBAAO,QAAQ,QAAQ;AAAA,QACzB;AAEA,YAAI,OAAO,UAAU,eAAe,KAAK,OAAO,KAAK,WAAW,GAAG;AACjE,eAAK,YAAY,KAAK,KAAK;AAC3B,cAAI,KAAK,YAAY,KAAK,IAAI,GAAG;AAC/B,mBAAO,QAAQ,QAAQ;AAAA,UACzB;AAAA,QACF,OAAO;AACL,iBAAO,QAAQ,QAAQ;AAAA,QACzB;AAEA,eAAO,KAAK,YAAY,KAAK;AAG7B,cAAM,MAAM,IAAIA,SAAQ;AAAA,UACtB,MAAM;AAAA,UACN,aAAa;AAAA,UACb,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,MAAM,CAAC,KAAK;AAAA,QACd,CAAC;AACD,eAAO,KAAK,KAAK,GAAG;AAAA,MACtB;AAAA,IACF;AAEA,IAAAF,QAAO,UAAU;AAAA;AAAA;;;AC/fjB;AAAA,sCAAAM,UAAAC,SAAA;AAAA;AAAA;AAEA,QAAI,SAAS,QAAQ,QAAQ;AAC7B,QAAIC,UAAS,OAAO;AAGpB,aAAS,UAAW,KAAK,KAAK;AAC5B,eAAS,OAAO,KAAK;AACnB,YAAI,GAAG,IAAI,IAAI,GAAG;AAAA,MACpB;AAAA,IACF;AACA,QAAIA,QAAO,QAAQA,QAAO,SAASA,QAAO,eAAeA,QAAO,iBAAiB;AAC/E,MAAAD,QAAO,UAAU;AAAA,IACnB,OAAO;AAEL,gBAAU,QAAQD,QAAO;AACzB,MAAAA,SAAQ,SAAS;AAAA,IACnB;AAEA,aAAS,WAAY,KAAK,kBAAkB,QAAQ;AAClD,aAAOE,QAAO,KAAK,kBAAkB,MAAM;AAAA,IAC7C;AAEA,eAAW,YAAY,OAAO,OAAOA,QAAO,SAAS;AAGrD,cAAUA,SAAQ,UAAU;AAE5B,eAAW,OAAO,SAAU,KAAK,kBAAkB,QAAQ;AACzD,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,IAAI,UAAU,+BAA+B;AAAA,MACrD;AACA,aAAOA,QAAO,KAAK,kBAAkB,MAAM;AAAA,IAC7C;AAEA,eAAW,QAAQ,SAAU,MAAM,MAAM,UAAU;AACjD,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AACA,UAAI,MAAMA,QAAO,IAAI;AACrB,UAAI,SAAS,QAAW;AACtB,YAAI,OAAO,aAAa,UAAU;AAChC,cAAI,KAAK,MAAM,QAAQ;AAAA,QACzB,OAAO;AACL,cAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,OAAO;AACL,YAAI,KAAK,CAAC;AAAA,MACZ;AACA,aAAO;AAAA,IACT;AAEA,eAAW,cAAc,SAAU,MAAM;AACvC,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AACA,aAAOA,QAAO,IAAI;AAAA,IACpB;AAEA,eAAW,kBAAkB,SAAU,MAAM;AAC3C,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AACA,aAAO,OAAO,WAAW,IAAI;AAAA,IAC/B;AAAA;AAAA;;;AChEA;AAAA,wCAAAC,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,UAAU;AACjB,aAAS,MAAO;AACZ,UAAI,EAAE,gBAAgB,KAAM,QAAO,IAAI;AAEvC,UAAI,QAAQ,CAAC;AACb,UAAI,MAAM;AAEV,WAAK,MAAM,SAAU,KAAK;AACtB,cAAM,KAAK,EAAE,QAAS,IAAI,CAAC;AAC3B,eAAO,IAAI;AACX,eAAO;AAAA,MACX;AAEA,WAAK,QAAQ,SAAU,GAAG;AACtB,cAAM,KAAK,EAAE,OAAQ,GAAG,OAAQ,EAAE,CAAC;AACnC,eAAO;AACP,eAAO;AAAA,MACX;AAEA,WAAK,UAAU,SAAU,GAAG;AACxB,cAAM,KAAK,EAAE,OAAQ,SAAS,QAAS,UAAU,OAAQ,EAAE,CAAC;AAC5D,eAAO;AACP,eAAO;AAAA,MACX;AAEA,OAAE,GAAG,IAAI,IAAI,IAAI,EAAG,EAAE,SAAS,SAAU,MAAM;AAC3C,aAAK,SAAS,OAAO,IAAI,IAAI,SAAU,GAAG;AACtC,gBAAM,KAAK,EAAE,QAAS,OAAO,OAAQ,OAAO,GAAG,OAAQ,EAAE,CAAC;AAC1D,iBAAO,OAAO;AACd,iBAAO;AAAA,QACX;AAEA,aAAK,SAAS,OAAO,IAAI,IAAI,SAAU,GAAG;AACtC,gBAAM,KAAK,EAAE,QAAS,UAAU,OAAQ,OAAO,GAAG,OAAQ,EAAE,CAAC;AAC7D,iBAAO,OAAO;AACd,iBAAO;AAAA,QACX;AAAA,MACJ,GAAG,KAAK,IAAI,CAAC;AAEb,WAAK,MAAM,SAAU,OAAO;AACxB,cAAM,KAAK,EAAE,QAAS,OAAO,OAAe,OAAQ,EAAE,CAAC;AACvD,eAAO;AACP,eAAO;AAAA,MACX;AAEA,WAAK,SAAS,WAAY;AACtB,eAAO;AAAA,MACX;AAEA,WAAK,SAAS,WAAY;AACtB,YAAI,MAAM,OAAO,MAAM,GAAG;AAC1B,YAAI,SAAS;AACb,cAAM,QAAQ,SAAU,MAAM;AAC1B,cAAI,KAAK,QAAQ;AACb,iBAAK,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC/B,sBAAU,KAAK,OAAO;AAAA,UAC1B,WACS,KAAK,SAAS,SAAS;AAE5B,gBAAI,IAAI,KAAK,IAAI,KAAK,KAAK;AAC3B,gBAAI,KAAK,KAAK,SAAS,KAAK;AAC5B,gBAAI,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG;AACxC,gBAAI,IAAI,KAAK,KAAK;AAClB,oBAAQ,IAAI,CAAC,GAAE,GAAE,CAAC,CAAC;AAEnB,oBAAQ,IAAI,KAAK,KAAK;AAItB,gBAAI,QAAQ,IAAK,KAAK,IAAK,CAAC,EAAE,IAAI;AAClC,gBAAI,QAAQ,KAAM,IAAI,MAAM,IAAK,CAAC,EAAE,KAAK,KAAK;AAC9C,gBAAI,QAAQ,IAAI;AAChB,gBAAI,QAAQ,IAAI;AAChB,sBAAU;AAAA,UACd,OACK;AACD,gBAAI,MAAM,KAAK,WAAW;AAC1B,gBAAI,KAAK,MAAM,EAAG,KAAK,QAAQ,KAAK,GAAG,EAAG,IAAI,CAAE,GAAG,CAAE;AAErD,qBACQ,IAAI,GAAG,CAAC,GACZ,MAAM,KAAK,IAAI,IAAI,KAAK,QAAQ,GAChC,KAAK,GAAG,CAAC,GACX;AACE,kBAAI,KAAK,IAAI;AACT,oBAAI,QAAQ,IAAI,KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI;AAAA,cAC9D,OACK;AACD,oBAAI,QAAQ,IAAK,KAAK,SAAS,IAAK;AAAA,cACxC;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ,CAAC;AACD,eAAO;AAAA,MACX;AAEA,WAAK,QAAQ,SAAU,QAAQ;AAC3B,eAAO,MAAM,KAAK,OAAO,CAAC;AAAA,MAC9B;AAAA,IACJ;AAAA;AAAA;;;ACnGA;AAAA,wCAAAC,UAAA;AAAA;AAAA,QAAMC,UAAS,sBAAuB;AAEtC,aAAS,MAAO,IAAI,GAAG;AACrB,YAAM,MAAM,IAAI,GAAG,UAAU;AAC7B,UAAI,QAAQ,KAAK,QAAQ,EAAG;AAE5B,YAAM,UAAUA,QAAO,MAAM,GAAG;AAChC,SAAG,IAAIA,QAAO,KAAK,OAAO,CAAC;AAC3B,SAAG,WAAW;AAAA,IAChB;AAEA,IAAAD,SAAQ,QAAQ;AAAA;AAAA;;;ACXhB;AAAA,kCAAAE,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,UAAU;AAKjB,QAAI,OAAO;AAEX,QAAI;AACF,aAAO,IAAI,YAAY,SAAS,IAAI,YAAY,OAAO,IAAI,WAAW;AAAA,QACpE;AAAA,QAAG;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAG;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAA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","names":["b","d","e","c","a","h","j","k","i","g","l","f","exports","module","MessageType","JSBI","exports","module","Variant","exports","module","path","exports","module","Message","path","exports","module","c","exports","module","Variant","property","properties","method","signal","exports","module","exports","module","fs","Variant","Message","constants","path","properties","exports","module","Message","path","exports","exports","module","exports","module","XMLDOMImplementation","version","exports","module","XMLDOMErrorHandler","exports","module","XMLDOMStringList","exports","module","XMLDOMConfiguration","exports","module","exports","module","XMLAttribute","exports","module","XMLNamedNodeMap","exports","module","XMLElement","exports","module","XMLCharacterData","exports","module","XMLCData","exports","module","XMLComment","exports","module","XMLDeclaration","version","exports","module","XMLDTDAttList","exports","module","XMLDTDEntity","exports","module","XMLDTDElement","exports","module","XMLDTDNotation","exports","module","XMLDocType","exports","module","XMLRaw","exports","module","XMLText","exports","module","XMLProcessingInstruction","exports","module","XMLDummy","exports","module","XMLNodeList","exports","module","exports","module","XMLNode","version","exports","module","XMLStringifier","exports","module","exports","module","XMLWriterBase","exports","module","XMLStringWriter","exports","module","XMLDocument","exports","module","XMLDocumentCB","version","exports","module","XMLStreamWriter","exports","module","exports","exports","s","exports","exports","exports","processors","process","err","resolve","exports","exports","module","exports","module","Message","path","resolve","err","xml","exports","module","constants","Message","path","resolve","children","exports","module","Buffer","exports","module","exports","Buffer","exports","module","exports","module","exports","Buffer","JSBI","exports","module","exports","module","JSBI","exports","module","exports","module","Buffer","constants","exports","module","Buffer","exports","module","Buffer","crypto","fs","path","constants","stat","err","exports","module","fs","uuid","err","exports","module","Variant","message","exports","module","exports","module","i","exports","module","reemit","exports","module","exports","module","exports","module","exports","module","streams","exports","err","Buffer","from","exports","module","Message","message","exports","module","constants","Variant","Message","crypto","unitName","version","resolve","identity","unitName","identity","stat","channel","identity","crypto","fs","path","crypto","value","properties","property","fingerprint","identity","identityOnly","marker","fs","path","channel","string","properties","identity","reference","kind","process","reference","prepare","reference","marker","fingerprint","properties","stat","creationProperties","resolve","fs","path","stat","creationProperties","marker","includes","properties","assertOwnership","identity","assertReference","reference","identityOnly","snapshot","identity","assertOwnership","assertReference","identityOnly","reference","snapshot","creationProperties","prepare","unitName","properties","fs","unitName","resolve","identity","snapshot","reference"]}
|