{"version":3,"sources":["../../node_modules/data-uri-to-buffer/src/index.ts","../../node_modules/web-streams-polyfill/src/utils.ts","../../node_modules/web-streams-polyfill/src/lib/helpers/miscellaneous.ts","../../node_modules/web-streams-polyfill/src/lib/helpers/webidl.ts","../../node_modules/web-streams-polyfill/src/lib/simple-queue.ts","../../node_modules/web-streams-polyfill/src/lib/abstract-ops/internal-methods.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/generic-reader.ts","../../node_modules/web-streams-polyfill/src/stub/number-isfinite.ts","../../node_modules/web-streams-polyfill/src/stub/math-trunc.ts","../../node_modules/web-streams-polyfill/src/lib/validators/basic.ts","../../node_modules/web-streams-polyfill/src/lib/validators/readable-stream.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/default-reader.ts","../../node_modules/web-streams-polyfill/src/target/es2018/stub/async-iterator-prototype.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/async-iterator.ts","../../node_modules/web-streams-polyfill/src/stub/number-isnan.ts","../../node_modules/web-streams-polyfill/src/lib/abstract-ops/ecmascript.ts","../../node_modules/web-streams-polyfill/src/lib/abstract-ops/miscellaneous.ts","../../node_modules/web-streams-polyfill/src/lib/abstract-ops/queue-with-sizes.ts","../../node_modules/web-streams-polyfill/src/lib/helpers/array-buffer-view.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/byte-stream-controller.ts","../../node_modules/web-streams-polyfill/src/lib/validators/reader-options.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/byob-reader.ts","../../node_modules/web-streams-polyfill/src/lib/abstract-ops/queuing-strategy.ts","../../node_modules/web-streams-polyfill/src/lib/validators/queuing-strategy.ts","../../node_modules/web-streams-polyfill/src/lib/validators/underlying-sink.ts","../../node_modules/web-streams-polyfill/src/lib/validators/writable-stream.ts","../../node_modules/web-streams-polyfill/src/lib/abort-signal.ts","../../node_modules/web-streams-polyfill/src/lib/writable-stream.ts","../../node_modules/web-streams-polyfill/src/globals.ts","../../node_modules/web-streams-polyfill/src/stub/dom-exception.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/pipe.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/default-controller.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/tee.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/readable-stream-like.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream/from.ts","../../node_modules/web-streams-polyfill/src/lib/validators/underlying-source.ts","../../node_modules/web-streams-polyfill/src/lib/validators/iterator-options.ts","../../node_modules/web-streams-polyfill/src/lib/validators/pipe-options.ts","../../node_modules/web-streams-polyfill/src/lib/validators/readable-writable-pair.ts","../../node_modules/web-streams-polyfill/src/lib/readable-stream.ts","../../node_modules/web-streams-polyfill/src/lib/validators/queuing-strategy-init.ts","../../node_modules/web-streams-polyfill/src/lib/byte-length-queuing-strategy.ts","../../node_modules/web-streams-polyfill/src/lib/count-queuing-strategy.ts","../../node_modules/web-streams-polyfill/src/lib/validators/transformer.ts","../../node_modules/web-streams-polyfill/src/lib/transform-stream.ts","../../node_modules/fetch-blob/streams.cjs","../../node_modules/fetch-blob/index.js","../../node_modules/fetch-blob/file.js","../../node_modules/formdata-polyfill/esm.min.js","../../node_modules/node-fetch/src/errors/base.js","../../node_modules/node-fetch/src/errors/fetch-error.js","../../node_modules/node-fetch/src/utils/is.js","../../node_modules/node-domexception/index.js","../../node_modules/fetch-blob/from.js","../../node_modules/node-fetch/src/utils/multipart-parser.js","../../node_modules/node-fetch/src/body.js","../../node_modules/node-fetch/src/headers.js","../../node_modules/node-fetch/src/utils/is-redirect.js","../../node_modules/node-fetch/src/response.js","../../node_modules/node-fetch/src/utils/get-search.js","../../node_modules/node-fetch/src/utils/referrer.js","../../node_modules/node-fetch/src/request.js","../../node_modules/node-fetch/src/errors/abort-error.js","../../node_modules/node-fetch/src/index.js","../platform_gps_helper.ts"],"names":["i","noop","x","_a","F","e","queueMicrotask","r","isAbortSignal","streamBrandCheckException","defaultControllerBrandCheckException","DOMException","ReadableStream","POOL_SIZE","process","Blob","clone","size","f","m","fs","stat","Body","clear","Buffer","toFormData","types","INTERNALS","deprecate","formatUrl","response","http","Stream","s","pump","PassThrough","fetch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaM,SAAU,gBAAgB,GAAA,EAAW;AAC1C,EAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,EAAG;AACzB,IAAA,MAAM,IAAI,UACT,kEAAkE,CAAA;;AAKpE,EAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAG9B,EAAA,MAAM,UAAA,GAAa,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAClC,EAAA,IAAI,UAAA,KAAe,EAAA,IAAM,UAAA,IAAc,CAAA,EAAG;AACzC,IAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;;AAI1C,EAAA,MAAM,OAAO,GAAA,CAAI,SAAA,CAAU,GAAG,UAAU,CAAA,CAAE,MAAM,GAAG,CAAA;AAEnD,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,CAAC,CAAA,IAAK,YAAA;AACxB,EAAA,IAAI,QAAA,GAAW,IAAA;AACf,EAAA,KAAA,IAASA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,IAAA,CAAK,QAAQA,EAAAA,EAAAA,EAAK;AACrC,IAAA,IAAI,IAAA,CAAKA,EAAC,CAAA,KAAM,QAAA,EAAU;AACzB,MAAA,MAAA,GAAS,IAAA;AACA,IAAA,CAAA,MAAA,IAAA,IAAA,CAAKA,EAAC,CAAA,EAAG;AAClB,MAAA,QAAA,IAAY,CAAA,CAAA,EAAM,IAAA,CAAKA,EAAC,CAAC,CAAA,CAAA;AACzB,MAAA,IAAI,KAAKA,EAAC,CAAA,CAAE,OAAA,CAAQ,UAAU,MAAM,CAAA,EAAG;AACtC,QAAA,OAAA,GAAU,IAAA,CAAKA,EAAC,CAAA,CAAE,SAAA,CAAU,CAAC,CAAA;;;;AAKhC,EAAA,IAAI,CAAC,IAAA,CAAK,CAAC,CAAA,IAAK,CAAC,QAAQ,MAAA,EAAQ;AAChC,IAAA,QAAA,IAAY,mBAAA;AACZ,IAAA,OAAA,GAAU,UAAA;;AAIX,EAAA,MAAM,QAAA,GAAW,SAAS,QAAA,GAAW,OAAA;AACrC,EAAA,MAAM,OAAO,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,UAAA,GAAa,CAAC,CAAC,CAAA;AACnD,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA;AAGzC,EAAA,MAAA,CAAO,IAAA,GAAO,IAAA;AACd,EAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAGlB,EAAA,MAAA,CAAO,OAAA,GAAU,OAAA;AAEjB,EAAA,OAAO,MAAA;AACR;AA3DA,IA6DA,YAAA;AA7DA,IAAA,SAAA,GAAA,KAAA,CAAA;;AA6DA,IAAA,YAAA,GAAe,eAAA;;;;;;;;;;eCnECC,KAAAA,GAAI;AAClB,QAAA,OAAO,MAAA;AACT,MAAA;ACCM,MAAA,SAAU,aAAaC,EAAAA,EAAM;AACjC,QAAA,OAAQ,OAAOA,EAAAA,KAAM,QAAA,IAAYA,EAAAA,KAAM,IAAA,IAAS,OAAOA,EAAAA,KAAM,UAAA;AAC/D,MAAA;AAEO,MAAA,MAAM,8BAAA,GAUPD,KAAAA;AAEU,MAAA,SAAA,eAAA,CAAgB,IAAc,IAAA,EAAY;AACxD,QAAA,IAAI;AACF,UAAA,MAAA,CAAO,cAAA,CAAe,IAAI,MAAA,EAAQ;YAChC,KAAA,EAAO,IAAA;YACP,YAAA,EAAc;WACf,CAAA;iBACDE,GAAAA,EAAM;;AAIV,MAAA;AC1BA,MAAA,MAAM,eAAA,GAAkB,OAAA;AACxB,MAAA,MAAM,mBAAA,GAAsB,QAAQ,SAAA,CAAU,IAAA;AAC9C,MAAA,MAAM,qBAAA,GAAwB,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA;AAG3D,MAAA,SAAU,WAAc,QAAA,EAGrB;AACP,QAAA,OAAO,IAAI,gBAAgB,QAAQ,CAAA;AACrC,MAAA;AAGM,MAAA,SAAU,oBAAuB,KAAA,EAAyB;AAC9D,QAAA,OAAO,UAAA,CAAW,CAAA,OAAA,KAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC7C,MAAA;AAGM,MAAA,SAAU,oBAA+B,MAAA,EAAW;AACxD,QAAA,OAAO,sBAAsB,MAAM,CAAA;AACrC,MAAA;eAEgB,kBAAA,CACd,OAAA,EACA,aACA,UAAA,EAA8D;AAG9D,QAAA,OAAO,mBAAA,CAAoB,IAAA,CAAK,OAAA,EAAS,WAAA,EAAa,UAAU,CAAA;AAClE,MAAA;eAKgB,WAAA,CACd,OAAA,EACA,aACA,UAAA,EAAsD;AACtD,QAAA,kBAAA,CACE,mBAAmB,OAAA,EAAS,WAAA,EAAa,UAAU,CAAA,EACnD,QACA,8BAA8B,CAAA;AAElC,MAAA;AAEgB,MAAA,SAAA,eAAA,CAAmB,SAAqB,WAAA,EAAmD;AACzG,QAAA,WAAA,CAAY,SAAS,WAAW,CAAA;AAClC,MAAA;AAEgB,MAAA,SAAA,aAAA,CAAc,SAA2B,UAAA,EAAqD;AAC5G,QAAA,WAAA,CAAY,OAAA,EAAS,QAAW,UAAU,CAAA;AAC5C,MAAA;eAEgB,oBAAA,CACd,OAAA,EACA,oBACA,gBAAA,EAAoE;AACpE,QAAA,OAAO,kBAAA,CAAmB,OAAA,EAAS,kBAAA,EAAoB,gBAAgB,CAAA;AACzE,MAAA;AAEM,MAAA,SAAU,0BAA0B,OAAA,EAAyB;AACjE,QAAA,kBAAA,CAAmB,OAAA,EAAS,QAAW,8BAA8B,CAAA;AACvE,MAAA;AAEA,MAAA,IAAI,kBAAkD,CAAA,QAAA,KAAW;AAC/D,QAAA,IAAI,OAAO,mBAAmB,UAAA,EAAY;AACxC,UAAA,eAAA,GAAkB,cAAA;AACb,QAAA,CAAA,MAAA;AACL,UAAA,MAAM,eAAA,GAAkB,oBAAoB,MAAS,CAAA;AACrD,UAAA,eAAA,GAAkB,CAAA,EAAA,KAAM,kBAAA,CAAmB,eAAA,EAAiB,EAAE,CAAA;;AAEhE,QAAA,OAAO,gBAAgB,QAAQ,CAAA;AACjC,MAAA,CAAA;eAIgB,WAAA,CAAmCC,EAAAA,EAAiC,GAAM,IAAA,EAAO;AAC/F,QAAA,IAAI,OAAOA,OAAM,UAAA,EAAY;AAC3B,UAAA,MAAM,IAAI,UAAU,4BAA4B,CAAA;;AAElD,QAAA,OAAO,SAAS,SAAA,CAAU,KAAA,CAAM,IAAA,CAAKA,EAAAA,EAAG,GAAG,IAAI,CAAA;AACjD,MAAA;eAEgB,WAAA,CAAmCA,EAAAA,EACA,GACA,IAAA,EAAO;AAIxD,QAAA,IAAI;AACF,UAAA,OAAO,mBAAA,CAAoB,WAAA,CAAYA,EAAAA,EAAG,CAAA,EAAG,IAAI,CAAC,CAAA;iBAC3C,KAAA,EAAO;AACd,UAAA,OAAO,oBAAoB,KAAK,CAAA;;AAEpC,MAAA;AC5FA,MAAA,MAAM,oBAAA,GAAuB,KAAA;YAahB,WAAA,CAAW;QAMtB,WAAA,GAAA;AAHQ,UAAA,IAAA,CAAO,OAAA,GAAG,CAAA;AACV,UAAA,IAAA,CAAK,KAAA,GAAG,CAAA;AAId,UAAA,IAAA,CAAK,MAAA,GAAS;AACZ,YAAA,SAAA,EAAW,EAAA;YACX,KAAA,EAAO;;AAET,UAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,MAAA;AAIlB,UAAA,IAAA,CAAK,OAAA,GAAU,CAAA;AAEf,UAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;;AAGf,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,OAAO,IAAA,CAAK,KAAA;;;;;;AAOd,QAAA,IAAA,CAAK,OAAA,EAAU;AACb,UAAA,MAAM,UAAU,IAAA,CAAK,KAAA;AACrB,UAAA,IAAI,OAAA,GAAU,OAAA;AAEd,UAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,MAAA,KAAW,oBAAA,GAAuB,CAAA,EAAG;AACzD,YAAA,OAAA,GAAU;AACR,cAAA,SAAA,EAAW,EAAA;cACX,KAAA,EAAO;;;AAMX,UAAA,OAAA,CAAQ,SAAA,CAAU,KAAK,OAAO,CAAA;AAC9B,UAAA,IAAI,YAAY,OAAA,EAAS;AACvB,YAAA,IAAA,CAAK,KAAA,GAAQ,OAAA;AACb,YAAA,OAAA,CAAQ,KAAA,GAAQ,OAAA;;AAElB,UAAA,EAAE,IAAA,CAAK,KAAA;;;;QAKT,KAAA,GAAK;AAGH,UAAA,MAAM,WAAW,IAAA,CAAK,MAAA;AACtB,UAAA,IAAI,QAAA,GAAW,QAAA;AACf,UAAA,MAAM,YAAY,IAAA,CAAK,OAAA;AACvB,UAAA,IAAI,YAAY,SAAA,GAAY,CAAA;AAE5B,UAAA,MAAM,WAAW,QAAA,CAAS,SAAA;AAC1B,UAAA,MAAM,OAAA,GAAU,SAAS,SAAS,CAAA;AAElC,UAAA,IAAI,cAAc,oBAAA,EAAsB;AAGtC,YAAA,QAAA,GAAW,QAAA,CAAS,KAAA;AACpB,YAAA,SAAA,GAAY,CAAA;;AAId,UAAA,EAAE,IAAA,CAAK,KAAA;AACP,UAAA,IAAA,CAAK,OAAA,GAAU,SAAA;AACf,UAAA,IAAI,aAAa,QAAA,EAAU;AACzB,YAAA,IAAA,CAAK,MAAA,GAAS,QAAA;;AAIhB,UAAA,QAAA,CAAS,SAAS,CAAA,GAAI,MAAA;AAEtB,UAAA,OAAO,OAAA;;;;;;;;;;AAWT,QAAA,OAAA,CAAQ,QAAA,EAA8B;AACpC,UAAA,IAAIJ,KAAI,IAAA,CAAK,OAAA;AACb,UAAA,IAAI,OAAO,IAAA,CAAK,MAAA;AAChB,UAAA,IAAI,WAAW,IAAA,CAAK,SAAA;AACpB,UAAA,OAAOA,EAAAA,KAAM,QAAA,CAAS,MAAA,IAAU,IAAA,CAAK,UAAU,MAAA,EAAW;AACxD,YAAA,IAAIA,EAAAA,KAAM,SAAS,MAAA,EAAQ;AAGzB,cAAA,IAAA,GAAO,IAAA,CAAK,KAAA;AACZ,cAAA,QAAA,GAAW,IAAA,CAAK,SAAA;AAChB,cAAAA,EAAAA,GAAI,CAAA;AACJ,cAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,gBAAA;;;AAGJ,YAAA,QAAA,CAAS,QAAA,CAASA,EAAC,CAAC,CAAA;AACpB,YAAA,EAAEA,EAAAA;;;;;QAMN,IAAA,GAAI;AAGF,UAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,UAAA,MAAM,SAAS,IAAA,CAAK,OAAA;AACpB,UAAA,OAAO,KAAA,CAAM,UAAU,MAAM,CAAA;;AAEhC;AC1IM,MAAA,MAAM,UAAA,GAAa,OAAO,gBAAgB,CAAA;AAC1C,MAAA,MAAM,UAAA,GAAa,OAAO,gBAAgB,CAAA;AAC1C,MAAA,MAAM,WAAA,GAAc,OAAO,iBAAiB,CAAA;AAC5C,MAAA,MAAM,SAAA,GAAY,OAAO,eAAe,CAAA;AACxC,MAAA,MAAM,YAAA,GAAe,OAAO,kBAAkB,CAAA;ACCrC,MAAA,SAAA,qCAAA,CAAyC,QAAiC,MAAA,EAAyB;AACjH,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAC9B,QAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AAEjB,QAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,UAAA,oCAAA,CAAqC,MAAM,CAAA;AAClC,QAAA,CAAA,MAAA,IAAA,MAAA,CAAO,WAAW,QAAA,EAAU;AACrC,UAAA,8CAAA,CAA+C,MAAM,CAAA;AAChD,QAAA,CAAA,MAAA;AAGL,UAAA,8CAAA,CAA+C,MAAA,EAAQ,OAAO,YAAY,CAAA;;AAE9E,MAAA;AAKgB,MAAA,SAAA,iCAAA,CAAkC,QAAmC,MAAA,EAAW;AAC9F,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAEtB,QAAA,OAAO,oBAAA,CAAqB,QAAQ,MAAM,CAAA;AAC5C,MAAA;AAEM,MAAA,SAAU,mCAAmC,MAAA,EAAiC;AAClF,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,UAAA,gCAAA,CACE,MAAA,EACA,IAAI,SAAA,CAAU,CAAA,gFAAA,CAAkF,CAAC,CAAA;AAC9F,QAAA,CAAA,MAAA;AACL,UAAA,yCAAA,CACE,MAAA,EACA,IAAI,SAAA,CAAU,CAAA,gFAAA,CAAkF,CAAC,CAAA;;AAGrG,QAAA,MAAA,CAAO,yBAAA,CAA0B,YAAY,CAAA,EAAC;AAE9C,QAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAChC,MAAA;AAIM,MAAA,SAAU,oBAAoB,IAAA,EAAY;AAC9C,QAAA,OAAO,IAAI,SAAA,CAAU,SAAA,GAAY,IAAA,GAAO,mCAAmC,CAAA;AAC7E,MAAA;AAIM,MAAA,SAAU,qCAAqC,MAAA,EAAiC;AACpF,QAAA,MAAA,CAAO,cAAA,GAAiB,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACrD,UAAA,MAAA,CAAO,sBAAA,GAAyB,OAAA;AAChC,UAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;QACjC,CAAC,CAAA;AACH,MAAA;AAEgB,MAAA,SAAA,8CAAA,CAA+C,QAAmC,MAAA,EAAW;AAC3G,QAAA,oCAAA,CAAqC,MAAM,CAAA;AAC3C,QAAA,gCAAA,CAAiC,QAAQ,MAAM,CAAA;AACjD,MAAA;AAEM,MAAA,SAAU,+CAA+C,MAAA,EAAiC;AAC9F,QAAA,oCAAA,CAAqC,MAAM,CAAA;AAC3C,QAAA,iCAAA,CAAkC,MAAM,CAAA;AAC1C,MAAA;AAEgB,MAAA,SAAA,gCAAA,CAAiC,QAAmC,MAAA,EAAW;AAC7F,QAAA,IAAI,MAAA,CAAO,0BAA0B,MAAA,EAAW;AAC9C,UAAA;;AAGF,QAAA,yBAAA,CAA0B,OAAO,cAAc,CAAA;AAC/C,QAAA,MAAA,CAAO,sBAAsB,MAAM,CAAA;AACnC,QAAA,MAAA,CAAO,sBAAA,GAAyB,MAAA;AAChC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AACjC,MAAA;AAEgB,MAAA,SAAA,yCAAA,CAA0C,QAAmC,MAAA,EAAW;AAItG,QAAA,8CAAA,CAA+C,QAAQ,MAAM,CAAA;AAC/D,MAAA;AAEM,MAAA,SAAU,kCAAkC,MAAA,EAAiC;AACjF,QAAA,IAAI,MAAA,CAAO,2BAA2B,MAAA,EAAW;AAC/C,UAAA;;AAGF,QAAA,MAAA,CAAO,uBAAuB,MAAS,CAAA;AACvC,QAAA,MAAA,CAAO,sBAAA,GAAyB,MAAA;AAChC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AACjC,MAAA;AClGA,MAAA,MAAM,cAAA,GAAyC,MAAA,CAAO,QAAA,IAAY,SAAUE,EAAAA,EAAC;AAC3E,QAAA,OAAO,OAAOA,EAAAA,KAAM,QAAA,IAAY,QAAA,CAASA,EAAC,CAAA;AAC5C,MAAA,CAAA;ACFA,MAAA,MAAM,SAAA,GAA+B,IAAA,CAAK,KAAA,IAAS,SAAU,CAAA,EAAC;AAC5D,QAAA,OAAO,CAAA,GAAI,IAAI,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,MAAM,CAAC,CAAA;AAC5C,MAAA,CAAA;ACDM,MAAA,SAAU,aAAaA,EAAAA,EAAM;AACjC,QAAA,OAAO,OAAOA,EAAAA,KAAM,QAAA,IAAY,OAAOA,EAAAA,KAAM,UAAA;AAC/C,MAAA;AAEgB,MAAA,SAAA,gBAAA,CAAiB,KACA,OAAA,EAAe;AAC9C,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,CAAC,YAAA,CAAa,GAAG,CAAA,EAAG;AAC3C,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,kBAAA,CAAoB,CAAA;;AAEtD,MAAA;AAKgB,MAAA,SAAA,cAAA,CAAeA,IAAY,OAAA,EAAe;AACxD,QAAA,IAAI,OAAOA,OAAM,UAAA,EAAY;AAC3B,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,mBAAA,CAAqB,CAAA;;AAEvD,MAAA;AAGM,MAAA,SAAU,SAASA,EAAAA,EAAM;AAC7B,QAAA,OAAQ,OAAOA,EAAAA,KAAM,QAAA,IAAYA,EAAAA,KAAM,IAAA,IAAS,OAAOA,EAAAA,KAAM,UAAA;AAC/D,MAAA;AAEgB,MAAA,SAAA,YAAA,CAAaA,IACA,OAAA,EAAe;AAC1C,QAAA,IAAI,CAAC,QAAA,CAASA,EAAC,CAAA,EAAG;AAChB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,kBAAA,CAAoB,CAAA;;AAEtD,MAAA;eAEgB,sBAAA,CAA0BA,EAAAA,EACA,UACA,OAAA,EAAe;AACvD,QAAA,IAAIA,OAAM,MAAA,EAAW;AACnB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,UAAA,EAAa,QAAQ,CAAA,iBAAA,EAAoB,OAAO,CAAA,EAAA,CAAI,CAAA;;AAE5E,MAAA;eAEgB,mBAAA,CAAuBA,EAAAA,EACA,OACA,OAAA,EAAe;AACpD,QAAA,IAAIA,OAAM,MAAA,EAAW;AACnB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,KAAK,CAAA,iBAAA,EAAoB,OAAO,CAAA,EAAA,CAAI,CAAA;;AAE/D,MAAA;AAGM,MAAA,SAAU,0BAA0B,KAAA,EAAc;AACtD,QAAA,OAAO,OAAO,KAAK,CAAA;AACrB,MAAA;AAEA,MAAA,SAAS,mBAAmBA,EAAAA,EAAS;AACnC,QAAA,OAAOA,EAAAA,KAAM,IAAI,CAAA,GAAIA,EAAAA;AACvB,MAAA;AAEA,MAAA,SAAS,YAAYA,EAAAA,EAAS;AAC5B,QAAA,OAAO,kBAAA,CAAmB,SAAA,CAAUA,EAAC,CAAC,CAAA;AACxC,MAAA;AAGgB,MAAA,SAAA,uCAAA,CAAwC,OAAgB,OAAA,EAAe;AACrF,QAAA,MAAM,UAAA,GAAa,CAAA;AACnB,QAAA,MAAM,aAAa,MAAA,CAAO,gBAAA;AAE1B,QAAA,IAAIA,EAAAA,GAAI,OAAO,KAAK,CAAA;AACpB,QAAAA,EAAAA,GAAI,mBAAmBA,EAAC,CAAA;AAExB,QAAA,IAAI,CAAC,cAAA,CAAeA,EAAC,CAAA,EAAG;AACtB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,uBAAA,CAAyB,CAAA;;AAGzD,QAAAA,EAAAA,GAAI,YAAYA,EAAC,CAAA;AAEjB,QAAA,IAAIA,EAAAA,GAAI,UAAA,IAAcA,EAAAA,GAAI,UAAA,EAAY;AACpC,UAAA,MAAM,IAAI,UAAU,CAAA,EAAG,OAAO,qCAAqC,UAAU,CAAA,IAAA,EAAO,UAAU,CAAA,WAAA,CAAa,CAAA;;AAG7G,QAAA,IAAI,CAAC,cAAA,CAAeA,EAAC,CAAA,IAAKA,OAAM,CAAA,EAAG;AACjC,UAAA,OAAO,CAAA;;AAQT,QAAA,OAAOA,EAAAA;AACT,MAAA;AC3FgB,MAAA,SAAA,oBAAA,CAAqBA,IAAY,OAAA,EAAe;AAC9D,QAAA,IAAI,CAAC,gBAAA,CAAiBA,EAAC,CAAA,EAAG;AACxB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,yBAAA,CAA2B,CAAA;;AAE7D,MAAA;ACwBM,MAAA,SAAU,mCAAsC,MAAA,EAAsB;AAC1E,QAAA,OAAO,IAAI,4BAA4B,MAAM,CAAA;AAC/C,MAAA;AAIgB,MAAA,SAAA,4BAAA,CAAgC,QACA,WAAA,EAA2B;AAIxE,QAAA,MAAA,CAAO,OAAA,CAA4C,aAAA,CAAc,IAAA,CAAK,WAAW,CAAA;AACpF,MAAA;eAEgB,gCAAA,CAAoC,MAAA,EAA2B,OAAsB,IAAA,EAAa;AAChH,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AAItB,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,aAAA,CAAc,KAAA,EAAK;AAC9C,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,WAAA,CAAY,WAAA,EAAW;AAClB,QAAA,CAAA,MAAA;AACL,UAAA,WAAA,CAAY,YAAY,KAAM,CAAA;;AAElC,MAAA;AAEM,MAAA,SAAU,iCAAoC,MAAA,EAAyB;AAC3E,QAAA,OAAQ,MAAA,CAAO,QAA2C,aAAA,CAAc,MAAA;AAC1E,MAAA;AAEM,MAAA,SAAU,+BAA+B,MAAA,EAAsB;AACnE,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AAEtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,6BAAA,CAA8B,MAAM,CAAA,EAAG;AAC1C,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;YAiBa,2BAAA,CAA2B;AAYtC,QAAA,WAAA,CAAY,MAAA,EAAyB;AACnC,UAAA,sBAAA,CAAuB,MAAA,EAAQ,GAAG,6BAA6B,CAAA;AAC/D,UAAA,oBAAA,CAAqB,QAAQ,iBAAiB,CAAA;AAE9C,UAAA,IAAI,sBAAA,CAAuB,MAAM,CAAA,EAAG;AAClC,YAAA,MAAM,IAAI,UAAU,6EAA6E,CAAA;;AAGnG,UAAA,qCAAA,CAAsC,MAAM,MAAM,CAAA;AAElD,UAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,WAAA,EAAW;;;;;;AAOtC,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,QAAQ,CAAC,CAAA;;AAGvE,UAAA,OAAO,IAAA,CAAK,cAAA;;;;;AAMd,QAAA,MAAA,CAAO,SAAc,MAAA,EAAS;AAC5B,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,QAAQ,CAAC,CAAA;;AAGvE,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,OAAO,mBAAA,CAAoB,mBAAA,CAAoB,QAAQ,CAAC,CAAA;;AAG1D,UAAA,OAAO,iCAAA,CAAkC,MAAM,MAAM,CAAA;;;;;;;QAQvD,IAAA,GAAI;AACF,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,MAAM,CAAC,CAAA;;AAGrE,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,OAAO,mBAAA,CAAoB,mBAAA,CAAoB,WAAW,CAAC,CAAA;;AAG7D,UAAA,IAAI,cAAA;AACJ,UAAA,IAAI,aAAA;AACJ,UAAA,MAAM,OAAA,GAAU,UAAA,CAA+C,CAAC,OAAA,EAAS,MAAA,KAAU;AACjF,YAAA,cAAA,GAAiB,OAAA;AACjB,YAAA,aAAA,GAAgB,MAAA;UAClB,CAAC,CAAA;AACD,UAAA,MAAM,WAAA,GAA8B;AAClC,YAAA,WAAA,EAAa,WAAS,cAAA,CAAe,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAClE,YAAA,WAAA,EAAa,MAAM,cAAA,CAAe,EAAE,OAAO,MAAA,EAAW,IAAA,EAAM,MAAM,CAAA;YAClE,WAAA,EAAa,CAAAG,EAAAA,KAAK,aAAA,CAAcA,EAAC;;AAEnC,UAAA,+BAAA,CAAgC,MAAM,WAAW,CAAA;AACjD,UAAA,OAAO,OAAA;;;;;;;;;;;QAYT,WAAA,GAAW;AACT,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,MAAM,iCAAiC,aAAa,CAAA;;AAGtD,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA;;AAGF,UAAA,kCAAA,CAAmC,IAAI,CAAA;;AAE1C;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,4BAA4B,SAAA,EAAW;QAC7D,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,IAAA,EAAM,EAAE,YAAY,IAAA,EAAI;QACxB,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,MAAA,EAAQ,EAAE,YAAY,IAAA;OACvB,CAAA;AACD,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AACtE,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA;AAClE,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,WAAA,EAAa,aAAa,CAAA;AAChF,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,2BAAA,CAA4B,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAC/E,KAAA,EAAO,6BAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIM,MAAA,SAAU,8BAAuCH,EAAAA,EAAM;AAC3D,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,eAAe,CAAA,EAAG;AAC7D,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,2BAAA;AACtB,MAAA;AAEgB,MAAA,SAAA,+BAAA,CAAmC,QACA,WAAA,EAA2B;AAC5E,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,MAAA,CAAO,UAAA,GAAa,IAAA;AAEpB,QAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,UAAA,WAAA,CAAY,WAAA,EAAW;AACd,QAAA,CAAA,MAAA,IAAA,MAAA,CAAO,WAAW,SAAA,EAAW;AACtC,UAAA,WAAA,CAAY,WAAA,CAAY,OAAO,YAAY,CAAA;AACtC,QAAA,CAAA,MAAA;AAEL,UAAA,MAAA,CAAO,yBAAA,CAA0B,SAAS,CAAA,CAAE,WAA+B,CAAA;;AAE/E,MAAA;AAEM,MAAA,SAAU,mCAAmC,MAAA,EAAmC;AACpF,QAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,QAAA,MAAMG,EAAAA,GAAI,IAAI,SAAA,CAAU,qBAAqB,CAAA;AAC7C,QAAA,4CAAA,CAA6C,QAAQA,EAAC,CAAA;AACxD,MAAA;AAEgB,MAAA,SAAA,4CAAA,CAA6C,QAAqCA,EAAAA,EAAM;AACtG,QAAA,MAAM,eAAe,MAAA,CAAO,aAAA;AAC5B,QAAA,MAAA,CAAO,aAAA,GAAgB,IAAI,WAAA,EAAW;AACtC,QAAA,YAAA,CAAa,QAAQ,CAAA,WAAA,KAAc;AACjC,UAAA,WAAA,CAAY,YAAYA,EAAC,CAAA;QAC3B,CAAC,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,iCAAiC,IAAA,EAAY;AACpD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,sCAAA,EAAyC,IAAI,CAAA,kDAAA,CAAoD,CAAA;AACrG,MAAA;ACjQO,MAAA,MAAM,sBAAA,GACX,MAAA,CAAO,cAAA,CAAe,MAAA,CAAO,eAAe,mBAAe;AAAA,MAAA,CAAkC,EAAE,SAAS,CAAA;YC6B7F,+BAAA,CAA+B;AAM1C,QAAA,WAAA,CAAY,QAAwC,aAAA,EAAsB;AAHlE,UAAA,IAAA,CAAe,eAAA,GAA4D,MAAA;AAC3E,UAAA,IAAA,CAAW,WAAA,GAAG,KAAA;AAGpB,UAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,UAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;;QAGxB,IAAA,GAAI;AACF,UAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,UAAA,EAAU;AACvC,UAAA,IAAA,CAAK,eAAA,GAAkB,KAAK,eAAA,GAC1B,oBAAA,CAAqB,KAAK,eAAA,EAAiB,SAAA,EAAW,SAAS,CAAA,GAC/D,SAAA,EAAS;AACX,UAAA,OAAO,IAAA,CAAK,eAAA;;AAGd,QAAA,MAAA,CAAO,KAAA,EAAU;AACf,UAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AACjD,UAAA,OAAO,IAAA,CAAK,kBACV,oBAAA,CAAqB,IAAA,CAAK,iBAAiB,WAAA,EAAa,WAAW,IACnE,WAAA,EAAW;;QAGP,UAAA,GAAU;AAChB,UAAA,IAAI,KAAK,WAAA,EAAa;AACpB,YAAA,OAAO,QAAQ,OAAA,CAAQ,EAAE,OAAO,MAAA,EAAW,IAAA,EAAM,MAAM,CAAA;;AAGzD,UAAA,MAAM,SAAS,IAAA,CAAK,OAAA;AAGpB,UAAA,IAAI,cAAA;AACJ,UAAA,IAAI,aAAA;AACJ,UAAA,MAAM,OAAA,GAAU,UAAA,CAA+C,CAAC,OAAA,EAAS,MAAA,KAAU;AACjF,YAAA,cAAA,GAAiB,OAAA;AACjB,YAAA,aAAA,GAAgB,MAAA;UAClB,CAAC,CAAA;AACD,UAAA,MAAM,WAAA,GAA8B;AAClC,YAAA,WAAA,EAAa,CAAA,KAAA,KAAQ;AACnB,cAAA,IAAA,CAAK,eAAA,GAAkB,MAAA;AAGvBC,cAAAA,eAAAA,CAAe,MAAM,eAAe,EAAE,KAAA,EAAO,OAAO,IAAA,EAAM,KAAA,EAAO,CAAC,CAAA;;AAEpE,YAAA,WAAA,EAAa,MAAK;AAChB,cAAA,IAAA,CAAK,eAAA,GAAkB,MAAA;AACvB,cAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,cAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,cAAA,cAAA,CAAe,EAAE,KAAA,EAAO,MAAA,EAAW,IAAA,EAAM,MAAM,CAAA;;AAEjD,YAAA,WAAA,EAAa,CAAA,MAAA,KAAS;AACpB,cAAA,IAAA,CAAK,eAAA,GAAkB,MAAA;AACvB,cAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,cAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,cAAA,aAAA,CAAc,MAAM,CAAA;;;AAGxB,UAAA,+BAAA,CAAgC,QAAQ,WAAW,CAAA;AACnD,UAAA,OAAO,OAAA;;AAGD,QAAA,YAAA,CAAa,KAAA,EAAU;AAC7B,UAAA,IAAI,KAAK,WAAA,EAAa;AACpB,YAAA,OAAO,QAAQ,OAAA,CAAQ,EAAE,KAAA,EAAO,IAAA,EAAM,MAAM,CAAA;;AAE9C,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAEnB,UAAA,MAAM,SAAS,IAAA,CAAK,OAAA;AAIpB,UAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACxB,YAAA,MAAM,MAAA,GAAS,iCAAA,CAAkC,MAAA,EAAQ,KAAK,CAAA;AAC9D,YAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,YAAA,OAAO,qBAAqB,MAAA,EAAQ,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,MAAI,CAAG,CAAA;;AAGnE,UAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,UAAA,OAAO,mBAAA,CAAoB,EAAE,KAAA,EAAO,IAAA,EAAM,MAAM,CAAA;;AAEnD;AAWD,MAAA,MAAM,oCAAA,GAAiF;QACrF,IAAA,GAAI;AACF,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,sCAAA,CAAuC,MAAM,CAAC,CAAA;;AAE3E,UAAA,OAAO,IAAA,CAAK,mBAAmB,IAAA,EAAI;;AAGrC,QAAA,MAAA,CAAuD,KAAA,EAAU;AAC/D,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,sCAAA,CAAuC,QAAQ,CAAC,CAAA;;AAE7E,UAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,MAAA,CAAO,KAAK,CAAA;;;AAG/C,MAAA,MAAA,CAAO,cAAA,CAAe,sCAAsC,sBAAsB,CAAA;AAIlE,MAAA,SAAA,kCAAA,CAAsC,QACA,aAAA,EAAsB;AAC1E,QAAA,MAAM,MAAA,GAAS,mCAAsC,MAAM,CAAA;AAC3D,QAAA,MAAM,IAAA,GAAO,IAAI,+BAAA,CAAgC,MAAA,EAAQ,aAAa,CAAA;AACtE,QAAA,MAAM,QAAA,GAAmD,MAAA,CAAO,MAAA,CAAO,oCAAoC,CAAA;AAC3G,QAAA,QAAA,CAAS,kBAAA,GAAqB,IAAA;AAC9B,QAAA,OAAO,QAAA;AACT,MAAA;AAEA,MAAA,SAAS,8BAAuCJ,EAAAA,EAAM;AACpD,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,oBAAoB,CAAA,EAAG;AAClE,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI;AAEF,UAAA,OAAQA,GAA+C,kBAAA,YACrD,+BAAA;iBACFC,GAAAA,EAAM;AACN,UAAA,OAAO,KAAA;;AAEX,MAAA;AAIA,MAAA,SAAS,uCAAuC,IAAA,EAAY;AAC1D,QAAA,OAAO,IAAI,SAAA,CAAU,CAAA,4BAAA,EAA+B,IAAI,CAAA,iDAAA,CAAmD,CAAA;AAC7G,MAAA;AC9KA,MAAA,MAAM,WAAA,GAAmC,MAAA,CAAO,KAAA,IAAS,SAAUD,EAAAA,EAAC;AAElE,QAAA,OAAOA,EAAAA,KAAMA,EAAAA;AACf,MAAA,CAAA;;ACQM,MAAA,SAAU,oBAAqC,QAAA,EAAW;AAG9D,QAAA,OAAO,SAAS,KAAA,EAAK;AACvB,MAAA;AAEM,MAAA,SAAU,kBAAA,CAAmB,IAAA,EACA,UAAA,EACA,GAAA,EACA,WACA,CAAA,EAAS;AAC1C,QAAA,IAAI,UAAA,CAAW,IAAI,CAAA,CAAE,GAAA,CAAI,IAAI,WAAW,GAAA,EAAK,SAAA,EAAW,CAAC,CAAA,EAAG,UAAU,CAAA;AACxE,MAAA;AAEO,MAAA,IAAI,mBAAA,GAAsB,CAAC,CAAA,KAA+B;AAC/D,QAAA,IAAI,OAAO,CAAA,CAAE,QAAA,KAAa,UAAA,EAAY;AACpC,UAAA,mBAAA,GAAsB,CAAA,MAAA,KAAU,OAAO,QAAA,EAAQ;AACtC,QAAA,CAAA,MAAA,IAAA,OAAO,oBAAoB,UAAA,EAAY;AAChD,UAAA,mBAAA,GAAsB,CAAA,MAAA,KAAU,gBAAgB,MAAA,EAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,CAAA;AACzE,QAAA,CAAA,MAAA;AAEL,UAAA,mBAAA,GAAsB,CAAA,MAAA,KAAU,MAAA;;AAElC,QAAA,OAAO,oBAAoB,CAAC,CAAA;AAC9B,MAAA,CAAA;AAMO,MAAA,IAAI,gBAAA,GAAmB,CAAC,CAAA,KAA2B;AACxD,QAAA,IAAI,OAAO,CAAA,CAAE,QAAA,KAAa,SAAA,EAAW;AACnC,UAAA,gBAAA,GAAmB,YAAU,MAAA,CAAO,QAAA;AAC/B,QAAA,CAAA,MAAA;AAEL,UAAA,gBAAA,GAAmB,CAAA,MAAA,KAAU,OAAO,UAAA,KAAe,CAAA;;AAErD,QAAA,OAAO,iBAAiB,CAAC,CAAA;AAC3B,MAAA,CAAA;eAEgB,gBAAA,CAAiB,MAAA,EAAqB,OAAe,GAAA,EAAW;AAG9E,QAAA,IAAI,OAAO,KAAA,EAAO;AAChB,UAAA,OAAO,MAAA,CAAO,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA;;AAEhC,QAAA,MAAM,SAAS,GAAA,GAAM,KAAA;AACrB,QAAA,MAAM,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACpC,QAAA,kBAAA,CAAmB,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,KAAA,EAAO,MAAM,CAAA;AAClD,QAAA,OAAO,KAAA;AACT,MAAA;AAMgB,MAAA,SAAA,SAAA,CAAsC,UAAa,IAAA,EAAO;AACxE,QAAA,MAAM,IAAA,GAAO,SAAS,IAAI,CAAA;AAC1B,QAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,EAAM;AACvC,UAAA,OAAO,MAAA;;AAET,QAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,IAAI,CAAC,CAAA,kBAAA,CAAoB,CAAA;;AAEzD,QAAA,OAAO,IAAA;AACT,MAAA;AAgBM,MAAA,SAAU,4BAA+B,kBAAA,EAAyC;AAKtF,QAAA,MAAM,YAAA,GAAe;AACnB,UAAA,CAAC,MAAA,CAAO,QAAQ,GAAG,MAAM,kBAAA,CAAmB;;AAG9C,QAAA,MAAM,gBAAiB,mBAAe;AACpC,UAAA,OAAO,OAAO,YAAA;AACf,QAAA,CAAA,EAAA;AAED,QAAA,MAAM,aAAa,aAAA,CAAc,IAAA;AACjC,QAAA,OAAO,EAAE,QAAA,EAAU,aAAA,EAAe,UAAA,EAAY,MAAM,KAAA,EAAK;AAC3D,MAAA;AAGO,MAAA,MAAM,mBAAA,GAAA,CACX,EAAA,GAAA,CAAAC,GAAAA,GAAA,MAAA,CAAO,aAAA,MAAa,QAAAA,GAAAA,KAAA,MAAA,GAAAA,GAAAA,GAAAA,CACpB,EAAA,GAAA,MAAA,CAAO,GAAA,MAAG,QAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,sBAAsB,CAAA,MAAC,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACpC,iBAAA;AAeF,MAAA,SAAS,WAAA,CACP,GAAA,EACA,IAAA,GAAO,MAAA,EACP,MAAA,EAAqC;AAGrC,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,IAAI,SAAS,OAAA,EAAS;AACpB,YAAA,MAAA,GAAS,SAAA,CAAU,KAAyB,mBAAmB,CAAA;AAC/D,YAAA,IAAI,WAAW,MAAA,EAAW;AACxB,cAAA,MAAM,UAAA,GAAa,SAAA,CAAU,GAAA,EAAoB,MAAA,CAAO,QAAQ,CAAA;AAChE,cAAA,MAAM,kBAAA,GAAqB,WAAA,CAAY,GAAA,EAAoB,MAAA,EAAQ,UAAU,CAAA;AAC7E,cAAA,OAAO,4BAA4B,kBAAkB,CAAA;;AAElD,UAAA,CAAA,MAAA;AACL,YAAA,MAAA,GAAS,SAAA,CAAU,GAAA,EAAoB,MAAA,CAAO,QAAQ,CAAA;;;AAG1D,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,MAAM,IAAI,UAAU,4BAA4B,CAAA;;AAElD,QAAA,MAAM,QAAA,GAAW,WAAA,CAAY,MAAA,EAAQ,GAAA,EAAK,EAAE,CAAA;AAC5C,QAAA,IAAI,CAAC,YAAA,CAAa,QAAQ,CAAA,EAAG;AAC3B,UAAA,MAAM,IAAI,UAAU,2CAA2C,CAAA;;AAEjE,QAAA,MAAM,aAAa,QAAA,CAAS,IAAA;AAC5B,QAAA,OAAO,EAAE,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,KAAA,EAAK;AAC5C,MAAA;AAIM,MAAA,SAAU,aAAgB,cAAA,EAAsC;AACpE,QAAA,MAAM,SAAS,WAAA,CAAY,cAAA,CAAe,YAAY,cAAA,CAAe,QAAA,EAAU,EAAE,CAAA;AACjF,QAAA,IAAI,CAAC,YAAA,CAAa,MAAM,CAAA,EAAG;AACzB,UAAA,MAAM,IAAI,UAAU,kDAAkD,CAAA;;AAExE,QAAA,OAAO,MAAA;AACT,MAAA;AAEM,MAAA,SAAU,iBACd,UAAA,EAA4C;AAG5C,QAAA,OAAO,OAAA,CAAQ,WAAW,IAAI,CAAA;AAChC,MAAA;AAEM,MAAA,SAAU,cAAiB,UAAA,EAAkC;AAEjE,QAAA,OAAO,UAAA,CAAW,KAAA;AACpB,MAAA;AChLM,MAAA,SAAU,oBAAoB,CAAA,EAAS;AAC3C,QAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,WAAA,CAAY,CAAC,CAAA,EAAG;AAClB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,IAAI,CAAA,EAAG;AACT,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;AAEM,MAAA,SAAU,kBAAkB,CAAA,EAA6B;AAC7D,QAAA,MAAM,MAAA,GAAS,iBAAiB,CAAA,CAAE,MAAA,EAAQ,EAAE,UAAA,EAAY,CAAA,CAAE,UAAA,GAAa,CAAA,CAAE,UAAU,CAAA;AACnF,QAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAC9B,MAAA;ACTM,MAAA,SAAU,aAAgB,SAAA,EAAuC;AAIrE,QAAA,MAAM,IAAA,GAAO,SAAA,CAAU,MAAA,CAAO,KAAA,EAAK;AACnC,QAAA,SAAA,CAAU,mBAAmB,IAAA,CAAK,IAAA;AAClC,QAAA,IAAI,SAAA,CAAU,kBAAkB,CAAA,EAAG;AACjC,UAAA,SAAA,CAAU,eAAA,GAAkB,CAAA;;AAG9B,QAAA,OAAO,IAAA,CAAK,KAAA;AACd,MAAA;eAEgB,oBAAA,CAAwB,SAAA,EAAyC,OAAU,IAAA,EAAY;AAGrG,QAAA,IAAI,CAAC,mBAAA,CAAoB,IAAI,CAAA,IAAK,SAAS,QAAA,EAAU;AACnD,UAAA,MAAM,IAAI,WAAW,sDAAsD,CAAA;;AAG7E,QAAA,SAAA,CAAU,MAAA,CAAO,IAAA,CAAK,EAAE,KAAA,EAAO,MAAM,CAAA;AACrC,QAAA,SAAA,CAAU,eAAA,IAAmB,IAAA;AAC/B,MAAA;AAEM,MAAA,SAAU,eAAkB,SAAA,EAAuC;AAIvE,QAAA,MAAM,IAAA,GAAO,SAAA,CAAU,MAAA,CAAO,IAAA,EAAI;AAClC,QAAA,OAAO,IAAA,CAAK,KAAA;AACd,MAAA;AAEM,MAAA,SAAU,WAAc,SAAA,EAA4B;AAGxD,QAAA,SAAA,CAAU,MAAA,GAAS,IAAI,WAAA,EAAW;AAClC,QAAA,SAAA,CAAU,eAAA,GAAkB,CAAA;AAC9B,MAAA;ACxBA,MAAA,SAAS,sBAAsB,IAAA,EAAc;AAC3C,QAAA,OAAO,IAAA,KAAS,QAAA;AAClB,MAAA;AAEM,MAAA,SAAU,WAAW,IAAA,EAAqB;AAC9C,QAAA,OAAO,qBAAA,CAAsB,KAAK,WAAW,CAAA;AAC/C,MAAA;AAEM,MAAA,SAAU,2BAAsD,IAAA,EAAmC;AACvG,QAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAC/B,UAAA,OAAO,CAAA;;AAET,QAAA,OAAQ,IAAA,CAA0C,iBAAA;AACpD,MAAA;YCSa,yBAAA,CAAyB;QAMpC,WAAA,GAAA;AACE,UAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;;;;;AAM3C,QAAA,IAAI,IAAA,GAAI;AACN,UAAA,IAAI,CAAC,2BAAA,CAA4B,IAAI,CAAA,EAAG;AACtC,YAAA,MAAM,+BAA+B,MAAM,CAAA;;AAG7C,UAAA,OAAO,IAAA,CAAK,KAAA;;AAWd,QAAA,OAAA,CAAQ,YAAA,EAAgC;AACtC,UAAA,IAAI,CAAC,2BAAA,CAA4B,IAAI,CAAA,EAAG;AACtC,YAAA,MAAM,+BAA+B,SAAS,CAAA;;AAEhD,UAAA,sBAAA,CAAuB,YAAA,EAAc,GAAG,SAAS,CAAA;AACjD,UAAA,YAAA,GAAe,uCAAA,CAAwC,cAAc,iBAAiB,CAAA;AAEtF,UAAA,IAAI,IAAA,CAAK,4CAA4C,MAAA,EAAW;AAC9D,YAAA,MAAM,IAAI,UAAU,wCAAwC,CAAA;;AAG9D,UAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,KAAA,CAAO,MAAM,CAAA,EAAG;AACxC,YAAA,MAAM,IAAI,UAAU,CAAA,+EAAA,CAAiF,CAAA;;AAMvG,UAAA,mCAAA,CAAoC,IAAA,CAAK,yCAAyC,YAAY,CAAA;;AAWhG,QAAA,kBAAA,CAAmB,IAAA,EAAgC;AACjD,UAAA,IAAI,CAAC,2BAAA,CAA4B,IAAI,CAAA,EAAG;AACtC,YAAA,MAAM,+BAA+B,oBAAoB,CAAA;;AAE3D,UAAA,sBAAA,CAAuB,IAAA,EAAM,GAAG,oBAAoB,CAAA;AAEpD,UAAA,IAAI,CAAC,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAG;AAC7B,YAAA,MAAM,IAAI,UAAU,8CAA8C,CAAA;;AAGpE,UAAA,IAAI,IAAA,CAAK,4CAA4C,MAAA,EAAW;AAC9D,YAAA,MAAM,IAAI,UAAU,wCAAwC,CAAA;;AAG9D,UAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,EAAG;AACjC,YAAA,MAAM,IAAI,UAAU,+EAAgF,CAAA;;AAGtG,UAAA,8CAAA,CAA+C,IAAA,CAAK,yCAAyC,IAAI,CAAA;;AAEpG;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,0BAA0B,SAAA,EAAW;QAC3D,OAAA,EAAS,EAAE,YAAY,IAAA,EAAI;QAC3B,kBAAA,EAAoB,EAAE,YAAY,IAAA,EAAI;QACtC,IAAA,EAAM,EAAE,YAAY,IAAA;OACrB,CAAA;AACD,MAAA,eAAA,CAAgB,yBAAA,CAA0B,SAAA,CAAU,OAAA,EAAS,SAAS,CAAA;AACtE,MAAA,eAAA,CAAgB,yBAAA,CAA0B,SAAA,CAAU,kBAAA,EAAoB,oBAAoB,CAAA;AAC5F,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,yBAAA,CAA0B,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAC7E,KAAA,EAAO,2BAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;YAyCa,4BAAA,CAA4B;QA4BvC,WAAA,GAAA;AACE,UAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;;;;;AAM3C,QAAA,IAAI,WAAA,GAAW;AACb,UAAA,IAAI,CAAC,8BAAA,CAA+B,IAAI,CAAA,EAAG;AACzC,YAAA,MAAM,wCAAwC,aAAa,CAAA;;AAG7D,UAAA,OAAO,2CAA2C,IAAI,CAAA;;;;;;AAOxD,QAAA,IAAI,WAAA,GAAW;AACb,UAAA,IAAI,CAAC,8BAAA,CAA+B,IAAI,CAAA,EAAG;AACzC,YAAA,MAAM,wCAAwC,aAAa,CAAA;;AAG7D,UAAA,OAAO,2CAA2C,IAAI,CAAA;;;;;;QAOxD,KAAA,GAAK;AACH,UAAA,IAAI,CAAC,8BAAA,CAA+B,IAAI,CAAA,EAAG;AACzC,YAAA,MAAM,wCAAwC,OAAO,CAAA;;AAGvD,UAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,YAAA,MAAM,IAAI,UAAU,4DAA4D,CAAA;;AAGlF,UAAA,MAAM,KAAA,GAAQ,KAAK,6BAAA,CAA8B,MAAA;AACjD,UAAA,IAAI,UAAU,UAAA,EAAY;AACxB,YAAA,MAAM,IAAI,SAAA,CAAU,CAAA,eAAA,EAAkB,KAAK,CAAA,yDAAA,CAA2D,CAAA;;AAGxG,UAAA,iCAAA,CAAkC,IAAI,CAAA;;AAQxC,QAAA,OAAA,CAAQ,KAAA,EAAiC;AACvC,UAAA,IAAI,CAAC,8BAAA,CAA+B,IAAI,CAAA,EAAG;AACzC,YAAA,MAAM,wCAAwC,SAAS,CAAA;;AAGzD,UAAA,sBAAA,CAAuB,KAAA,EAAO,GAAG,SAAS,CAAA;AAC1C,UAAA,IAAI,CAAC,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA,EAAG;AAC9B,YAAA,MAAM,IAAI,UAAU,oCAAoC,CAAA;;AAE1D,UAAA,IAAI,KAAA,CAAM,eAAe,CAAA,EAAG;AAC1B,YAAA,MAAM,IAAI,UAAU,qCAAqC,CAAA;;AAE3D,UAAA,IAAI,KAAA,CAAM,MAAA,CAAO,UAAA,KAAe,CAAA,EAAG;AACjC,YAAA,MAAM,IAAI,UAAU,CAAA,4CAAA,CAA8C,CAAA;;AAGpE,UAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,YAAA,MAAM,IAAI,UAAU,8BAA8B,CAAA;;AAGpD,UAAA,MAAM,KAAA,GAAQ,KAAK,6BAAA,CAA8B,MAAA;AACjD,UAAA,IAAI,UAAU,UAAA,EAAY;AACxB,YAAA,MAAM,IAAI,SAAA,CAAU,CAAA,eAAA,EAAkB,KAAK,CAAA,8DAAA,CAAgE,CAAA;;AAG7G,UAAA,mCAAA,CAAoC,MAAM,KAAK,CAAA;;;;;AAMjD,QAAA,KAAA,CAAME,KAAS,MAAA,EAAS;AACtB,UAAA,IAAI,CAAC,8BAAA,CAA+B,IAAI,CAAA,EAAG;AACzC,YAAA,MAAM,wCAAwC,OAAO,CAAA;;AAGvD,UAAA,iCAAA,CAAkC,MAAMA,EAAC,CAAA;;;QAI3C,CAAC,WAAW,EAAE,MAAA,EAAW;AACvB,UAAA,iDAAA,CAAkD,IAAI,CAAA;AAEtD,UAAA,UAAA,CAAW,IAAI,CAAA;AAEf,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,MAAM,CAAA;AAC3C,UAAA,2CAAA,CAA4C,IAAI,CAAA;AAChD,UAAA,OAAO,MAAA;;;QAIT,CAAC,SAAS,EAAE,WAAA,EAA+C;AACzD,UAAA,MAAM,SAAS,IAAA,CAAK,6BAAA;AAGpB,UAAA,IAAI,IAAA,CAAK,kBAAkB,CAAA,EAAG;AAG5B,YAAA,oDAAA,CAAqD,MAAM,WAAW,CAAA;AACtE,YAAA;;AAGF,UAAA,MAAM,wBAAwB,IAAA,CAAK,sBAAA;AACnC,UAAA,IAAI,0BAA0B,MAAA,EAAW;AACvC,YAAA,IAAI,MAAA;AACJ,YAAA,IAAI;AACF,cAAA,MAAA,GAAS,IAAI,YAAY,qBAAqB,CAAA;qBACvC,OAAA,EAAS;AAChB,cAAA,WAAA,CAAY,YAAY,OAAO,CAAA;AAC/B,cAAA;;AAGF,YAAA,MAAM,kBAAA,GAAgD;AACpD,cAAA,MAAA;cACA,gBAAA,EAAkB,qBAAA;cAClB,UAAA,EAAY,CAAA;cACZ,UAAA,EAAY,qBAAA;cACZ,WAAA,EAAa,CAAA;cACb,WAAA,EAAa,CAAA;cACb,WAAA,EAAa,CAAA;cACb,eAAA,EAAiB,UAAA;cACjB,UAAA,EAAY;;AAGd,YAAA,IAAA,CAAK,iBAAA,CAAkB,KAAK,kBAAkB,CAAA;;AAGhD,UAAA,4BAAA,CAA6B,QAAQ,WAAW,CAAA;AAChD,UAAA,4CAAA,CAA6C,IAAI,CAAA;;;AAInD,QAAA,CAAC,YAAY,CAAA,GAAC;AACZ,UAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AACrC,YAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,iBAAA,CAAkB,IAAA,EAAI;AACjD,YAAA,aAAA,CAAc,UAAA,GAAa,MAAA;AAE3B,YAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,WAAA,EAAW;AACxC,YAAA,IAAA,CAAK,iBAAA,CAAkB,KAAK,aAAa,CAAA;;;AAG9C;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,6BAA6B,SAAA,EAAW;QAC9D,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,OAAA,EAAS,EAAE,YAAY,IAAA,EAAI;QAC3B,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,WAAA,EAAa,EAAE,YAAY,IAAA;OAC5B,CAAA;AACD,MAAA,eAAA,CAAgB,4BAAA,CAA6B,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACrE,MAAA,eAAA,CAAgB,4BAAA,CAA6B,SAAA,CAAU,OAAA,EAAS,SAAS,CAAA;AACzE,MAAA,eAAA,CAAgB,4BAAA,CAA6B,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACrE,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,4BAAA,CAA6B,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAChF,KAAA,EAAO,8BAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIM,MAAA,SAAU,+BAA+BH,EAAAA,EAAM;AACnD,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,+BAA+B,CAAA,EAAG;AAC7E,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,4BAAA;AACtB,MAAA;AAEA,MAAA,SAAS,4BAA4BA,EAAAA,EAAM;AACzC,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,yCAAyC,CAAA,EAAG;AACvF,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,yBAAA;AACtB,MAAA;AAEA,MAAA,SAAS,6CAA6C,UAAA,EAAwC;AAC5F,QAAA,MAAM,UAAA,GAAa,2CAA2C,UAAU,CAAA;AACxE,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA;;AAGF,QAAA,IAAI,WAAW,QAAA,EAAU;AACvB,UAAA,UAAA,CAAW,UAAA,GAAa,IAAA;AACxB,UAAA;;AAKF,QAAA,UAAA,CAAW,QAAA,GAAW,IAAA;AAGtB,QAAA,MAAM,WAAA,GAAc,WAAW,cAAA,EAAc;AAC7C,QAAA,WAAA,CACE,aACA,MAAK;AACH,UAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AAEtB,UAAA,IAAI,WAAW,UAAA,EAAY;AACzB,YAAA,UAAA,CAAW,UAAA,GAAa,KAAA;AACxB,YAAA,4CAAA,CAA6C,UAAU,CAAA;;AAGzD,UAAA,OAAO,IAAA;AAET,QAAA,CAAA,EAAA,CAAAG,EAAAA,KAAI;AACF,UAAA,iCAAA,CAAkC,YAAYA,EAAC,CAAA;AAC/C,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;AAEA,MAAA,SAAS,kDAAkD,UAAA,EAAwC;AACjG,QAAA,iDAAA,CAAkD,UAAU,CAAA;AAC5D,QAAA,UAAA,CAAW,iBAAA,GAAoB,IAAI,WAAA,EAAW;AAChD,MAAA;AAEA,MAAA,SAAS,oDAAA,CACP,QACA,kBAAA,EAAyC;AAKzC,QAAA,IAAI,IAAA,GAAO,KAAA;AACX,QAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAE9B,UAAA,IAAA,GAAO,IAAA;;AAGT,QAAA,MAAM,UAAA,GAAa,sDAAyD,kBAAkB,CAAA;AAC9F,QAAA,IAAI,kBAAA,CAAmB,eAAe,SAAA,EAAW;AAC/C,UAAA,gCAAA,CAAiC,MAAA,EAAQ,YAAgD,IAAI,CAAA;AACxF,QAAA,CAAA,MAAA;AAEL,UAAA,oCAAA,CAAqC,MAAA,EAAQ,YAAY,IAAI,CAAA;;AAEjE,MAAA;AAEA,MAAA,SAAS,sDACP,kBAAA,EAAyC;AAEzC,QAAA,MAAM,cAAc,kBAAA,CAAmB,WAAA;AACvC,QAAA,MAAM,cAAc,kBAAA,CAAmB,WAAA;AAKvC,QAAA,OAAO,IAAI,mBAAmB,eAAA,CAC5B,kBAAA,CAAmB,QAAQ,kBAAA,CAAmB,UAAA,EAAY,cAAc,WAAW,CAAA;AACvF,MAAA;AAEA,MAAA,SAAS,+CAAA,CAAgD,UAAA,EACA,MAAA,EACA,UAAA,EACA,UAAA,EAAkB;AACzE,QAAA,UAAA,CAAW,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,UAAA,EAAY,YAAY,CAAA;AACzD,QAAA,UAAA,CAAW,eAAA,IAAmB,UAAA;AAChC,MAAA;AAEA,MAAA,SAAS,qDAAA,CAAsD,UAAA,EACA,MAAA,EACA,UAAA,EACA,UAAA,EAAkB;AAC/E,QAAA,IAAI,WAAA;AACJ,QAAA,IAAI;AACF,UAAA,WAAA,GAAc,gBAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,UAAA,GAAa,UAAU,CAAA;iBACnE,MAAA,EAAQ;AACf,UAAA,iCAAA,CAAkC,YAAY,MAAM,CAAA;AACpD,UAAA,MAAM,MAAA;;AAER,QAAA,+CAAA,CAAgD,UAAA,EAAY,WAAA,EAAa,CAAA,EAAG,UAAU,CAAA;AACxF,MAAA;AAEA,MAAA,SAAS,0DAAA,CAA2D,YACA,eAAA,EAAmC;AAErG,QAAA,IAAI,eAAA,CAAgB,cAAc,CAAA,EAAG;AACnC,UAAA,qDAAA,CACE,YACA,eAAA,CAAgB,MAAA,EAChB,eAAA,CAAgB,UAAA,EAChB,gBAAgB,WAAW,CAAA;;AAG/B,QAAA,gDAAA,CAAiD,UAAU,CAAA;AAC7D,MAAA;AAEA,MAAA,SAAS,2DAAA,CAA4D,YACA,kBAAA,EAAsC;AACzG,QAAA,MAAM,cAAA,GAAiB,KAAK,GAAA,CAAI,UAAA,CAAW,iBACX,kBAAA,CAAmB,UAAA,GAAa,mBAAmB,WAAW,CAAA;AAC9F,QAAA,MAAM,cAAA,GAAiB,mBAAmB,WAAA,GAAc,cAAA;AAExD,QAAA,IAAI,yBAAA,GAA4B,cAAA;AAChC,QAAA,IAAI,KAAA,GAAQ,KAAA;AAEZ,QAAA,MAAM,cAAA,GAAiB,iBAAiB,kBAAA,CAAmB,WAAA;AAC3D,QAAA,MAAM,kBAAkB,cAAA,GAAiB,cAAA;AAGzC,QAAA,IAAI,eAAA,IAAmB,mBAAmB,WAAA,EAAa;AACrD,UAAA,yBAAA,GAA4B,kBAAkB,kBAAA,CAAmB,WAAA;AACjE,UAAA,KAAA,GAAQ,IAAA;;AAGV,QAAA,MAAM,QAAQ,UAAA,CAAW,MAAA;AAEzB,QAAA,OAAO,4BAA4B,CAAA,EAAG;AACpC,UAAA,MAAM,WAAA,GAAc,MAAM,IAAA,EAAI;AAE9B,UAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,yBAAA,EAA2B,YAAY,UAAU,CAAA;AAE9E,UAAA,MAAM,SAAA,GAAY,kBAAA,CAAmB,UAAA,GAAa,kBAAA,CAAmB,WAAA;AACrE,UAAA,kBAAA,CAAmB,mBAAmB,MAAA,EAAQ,SAAA,EAAW,YAAY,MAAA,EAAQ,WAAA,CAAY,YAAY,WAAW,CAAA;AAEhH,UAAA,IAAI,WAAA,CAAY,eAAe,WAAA,EAAa;AAC1C,YAAA,KAAA,CAAM,KAAA,EAAK;AACN,UAAA,CAAA,MAAA;AACL,YAAA,WAAA,CAAY,UAAA,IAAc,WAAA;AAC1B,YAAA,WAAA,CAAY,UAAA,IAAc,WAAA;;AAE5B,UAAA,UAAA,CAAW,eAAA,IAAmB,WAAA;AAE9B,UAAA,sDAAA,CAAuD,UAAA,EAAY,aAAa,kBAAkB,CAAA;AAElG,UAAA,yBAAA,IAA6B,WAAA;;AAS/B,QAAA,OAAO,KAAA;AACT,MAAA;AAEA,MAAA,SAAS,sDAAA,CAAuD,UAAA,EACA,IAAA,EACA,kBAAA,EAAsC;AAGpG,QAAA,kBAAA,CAAmB,WAAA,IAAe,IAAA;AACpC,MAAA;AAEA,MAAA,SAAS,6CAA6C,UAAA,EAAwC;AAG5F,QAAA,IAAI,UAAA,CAAW,eAAA,KAAoB,CAAA,IAAK,UAAA,CAAW,eAAA,EAAiB;AAClE,UAAA,2CAAA,CAA4C,UAAU,CAAA;AACtD,UAAA,mBAAA,CAAoB,WAAW,6BAA6B,CAAA;AACvD,QAAA,CAAA,MAAA;AACL,UAAA,4CAAA,CAA6C,UAAU,CAAA;;AAE3D,MAAA;AAEA,MAAA,SAAS,kDAAkD,UAAA,EAAwC;AACjG,QAAA,IAAI,UAAA,CAAW,iBAAiB,IAAA,EAAM;AACpC,UAAA;;AAGF,QAAA,UAAA,CAAW,aAAa,uCAAA,GAA0C,MAAA;AAClE,QAAA,UAAA,CAAW,aAAa,KAAA,GAAQ,IAAA;AAChC,QAAA,UAAA,CAAW,YAAA,GAAe,IAAA;AAC5B,MAAA;AAEA,MAAA,SAAS,iEAAiE,UAAA,EAAwC;AAGhH,QAAA,OAAO,UAAA,CAAW,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAC9C,UAAA,IAAI,UAAA,CAAW,oBAAoB,CAAA,EAAG;AACpC,YAAA;;AAGF,UAAA,MAAM,kBAAA,GAAqB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AAG5D,UAAA,IAAI,2DAAA,CAA4D,UAAA,EAAY,kBAAkB,CAAA,EAAG;AAC/F,YAAA,gDAAA,CAAiD,UAAU,CAAA;AAE3D,YAAA,oDAAA,CACE,UAAA,CAAW,+BACX,kBAAkB,CAAA;;;AAI1B,MAAA;AAEA,MAAA,SAAS,0DAA0D,UAAA,EAAwC;AACzG,QAAA,MAAM,MAAA,GAAS,WAAW,6BAAA,CAA8B,OAAA;AAExD,QAAA,OAAO,MAAA,CAAO,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACtC,UAAA,IAAI,UAAA,CAAW,oBAAoB,CAAA,EAAG;AACpC,YAAA;;AAEF,UAAA,MAAM,WAAA,GAAc,MAAA,CAAO,aAAA,CAAc,KAAA,EAAK;AAC9C,UAAA,oDAAA,CAAqD,YAAY,WAAW,CAAA;;AAEhF,MAAA;AAEM,MAAA,SAAU,oCAAA,CACd,UAAA,EACA,IAAA,EACA,GAAA,EACA,eAAA,EAAmC;AAEnC,QAAA,MAAM,SAAS,UAAA,CAAW,6BAAA;AAE1B,QAAA,MAAM,OAAO,IAAA,CAAK,WAAA;AAClB,QAAA,MAAM,WAAA,GAAc,2BAA2B,IAAI,CAAA;AAEnD,QAAA,MAAM,EAAE,UAAA,EAAY,UAAA,EAAU,GAAK,IAAA;AAEnC,QAAA,MAAM,cAAc,GAAA,GAAM,WAAA;AAI1B,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI;AACF,UAAA,MAAA,GAAS,mBAAA,CAAoB,KAAK,MAAM,CAAA;iBACjCA,EAAAA,EAAG;AACV,UAAA,eAAA,CAAgB,YAAYA,EAAC,CAAA;AAC7B,UAAA;;AAGF,QAAA,MAAM,kBAAA,GAAgD;AACpD,UAAA,MAAA;AACA,UAAA,gBAAA,EAAkB,MAAA,CAAO,UAAA;AACzB,UAAA,UAAA;AACA,UAAA,UAAA;UACA,WAAA,EAAa,CAAA;AACb,UAAA,WAAA;AACA,UAAA,WAAA;UACA,eAAA,EAAiB,IAAA;UACjB,UAAA,EAAY;;AAGd,QAAA,IAAI,UAAA,CAAW,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAC3C,UAAA,UAAA,CAAW,iBAAA,CAAkB,KAAK,kBAAkB,CAAA;AAMpD,UAAA,gCAAA,CAAiC,QAAQ,eAAe,CAAA;AACxD,UAAA;;AAGF,QAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,UAAA,MAAM,YAAY,IAAI,IAAA,CAAK,mBAAmB,MAAA,EAAQ,kBAAA,CAAmB,YAAY,CAAC,CAAA;AACtF,UAAA,eAAA,CAAgB,YAAY,SAAS,CAAA;AACrC,UAAA;;AAGF,QAAA,IAAI,UAAA,CAAW,kBAAkB,CAAA,EAAG;AAClC,UAAA,IAAI,2DAAA,CAA4D,UAAA,EAAY,kBAAkB,CAAA,EAAG;AAC/F,YAAA,MAAM,UAAA,GAAa,sDAAyD,kBAAkB,CAAA;AAE9F,YAAA,4CAAA,CAA6C,UAAU,CAAA;AAEvD,YAAA,eAAA,CAAgB,YAAY,UAAU,CAAA;AACtC,YAAA;;AAGF,UAAA,IAAI,WAAW,eAAA,EAAiB;AAC9B,YAAA,MAAMA,EAAAA,GAAI,IAAI,SAAA,CAAU,yDAAyD,CAAA;AACjF,YAAA,iCAAA,CAAkC,YAAYA,EAAC,CAAA;AAE/C,YAAA,eAAA,CAAgB,YAAYA,EAAC,CAAA;AAC7B,YAAA;;;AAIJ,QAAA,UAAA,CAAW,iBAAA,CAAkB,KAAK,kBAAkB,CAAA;AAEpD,QAAA,gCAAA,CAAoC,QAAQ,eAAe,CAAA;AAC3D,QAAA,4CAAA,CAA6C,UAAU,CAAA;AACzD,MAAA;AAEA,MAAA,SAAS,gDAAA,CAAiD,YACA,eAAA,EAAmC;AAG3F,QAAA,IAAI,eAAA,CAAgB,eAAe,MAAA,EAAQ;AACzC,UAAA,gDAAA,CAAiD,UAAU,CAAA;;AAG7D,QAAA,MAAM,SAAS,UAAA,CAAW,6BAAA;AAC1B,QAAA,IAAI,2BAAA,CAA4B,MAAM,CAAA,EAAG;AACvC,UAAA,OAAO,oCAAA,CAAqC,MAAM,CAAA,GAAI,CAAA,EAAG;AACvD,YAAA,MAAM,kBAAA,GAAqB,iDAAiD,UAAU,CAAA;AACtF,YAAA,oDAAA,CAAqD,QAAQ,kBAAkB,CAAA;;;AAGrF,MAAA;AAEA,MAAA,SAAS,kDAAA,CAAmD,UAAA,EACA,YAAA,EACA,kBAAA,EAAsC;AAGhG,QAAA,sDAAA,CAAuD,UAAA,EAAY,cAAc,kBAAkB,CAAA;AAEnG,QAAA,IAAI,kBAAA,CAAmB,eAAe,MAAA,EAAQ;AAC5C,UAAA,0DAAA,CAA2D,YAAY,kBAAkB,CAAA;AACzF,UAAA,gEAAA,CAAiE,UAAU,CAAA;AAC3E,UAAA;;AAGF,QAAA,IAAI,kBAAA,CAAmB,WAAA,GAAc,kBAAA,CAAmB,WAAA,EAAa;AAGnE,UAAA;;AAGF,QAAA,gDAAA,CAAiD,UAAU,CAAA;AAE3D,QAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,WAAA,GAAc,kBAAA,CAAmB,WAAA;AAC1E,QAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,UAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,UAAA,GAAa,kBAAA,CAAmB,WAAA;AAC/D,UAAA,qDAAA,CACE,UAAA,EACA,kBAAA,CAAmB,MAAA,EACnB,GAAA,GAAM,eACN,aAAa,CAAA;;AAIjB,QAAA,kBAAA,CAAmB,WAAA,IAAe,aAAA;AAClC,QAAA,oDAAA,CAAqD,UAAA,CAAW,+BAA+B,kBAAkB,CAAA;AAEjH,QAAA,gEAAA,CAAiE,UAAU,CAAA;AAC7E,MAAA;AAEA,MAAA,SAAS,2CAAA,CAA4C,YAA0C,YAAA,EAAoB;AACjH,QAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AAGzD,QAAA,iDAAA,CAAkD,UAAU,CAAA;AAE5D,QAAA,MAAM,KAAA,GAAQ,WAAW,6BAAA,CAA8B,MAAA;AACvD,QAAA,IAAI,UAAU,QAAA,EAAU;AAEtB,UAAA,gDAAA,CAAiD,YAAY,eAAe,CAAA;AACvE,QAAA,CAAA,MAAA;AAGL,UAAA,kDAAA,CAAmD,UAAA,EAAY,cAAc,eAAe,CAAA;;AAG9F,QAAA,4CAAA,CAA6C,UAAU,CAAA;AACzD,MAAA;AAEA,MAAA,SAAS,iDACP,UAAA,EAAwC;AAGxC,QAAA,MAAM,UAAA,GAAa,UAAA,CAAW,iBAAA,CAAkB,KAAA,EAAK;AACrD,QAAA,OAAO,UAAA;AACT,MAAA;AAEA,MAAA,SAAS,2CAA2C,UAAA,EAAwC;AAC1F,QAAA,MAAM,SAAS,UAAA,CAAW,6BAAA;AAE1B,QAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,WAAW,eAAA,EAAiB;AAC9B,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AACxB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,+BAA+B,MAAM,CAAA,IAAK,gCAAA,CAAiC,MAAM,IAAI,CAAA,EAAG;AAC1F,UAAA,OAAO,IAAA;;AAGT,QAAA,IAAI,4BAA4B,MAAM,CAAA,IAAK,oCAAA,CAAqC,MAAM,IAAI,CAAA,EAAG;AAC3F,UAAA,OAAO,IAAA;;AAGT,QAAA,MAAM,WAAA,GAAc,2CAA2C,UAAU,CAAA;AAEzE,QAAA,IAAI,cAAe,CAAA,EAAG;AACpB,UAAA,OAAO,IAAA;;AAGT,QAAA,OAAO,KAAA;AACT,MAAA;AAEA,MAAA,SAAS,4CAA4C,UAAA,EAAwC;AAC3F,QAAA,UAAA,CAAW,cAAA,GAAiB,MAAA;AAC5B,QAAA,UAAA,CAAW,gBAAA,GAAmB,MAAA;AAChC,MAAA;AAIM,MAAA,SAAU,kCAAkC,UAAA,EAAwC;AACxF,QAAA,MAAM,SAAS,UAAA,CAAW,6BAAA;AAE1B,QAAA,IAAI,UAAA,CAAW,eAAA,IAAmB,MAAA,CAAO,MAAA,KAAW,UAAA,EAAY;AAC9D,UAAA;;AAGF,QAAA,IAAI,UAAA,CAAW,kBAAkB,CAAA,EAAG;AAClC,UAAA,UAAA,CAAW,eAAA,GAAkB,IAAA;AAE7B,UAAA;;AAGF,QAAA,IAAI,UAAA,CAAW,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAC3C,UAAA,MAAM,oBAAA,GAAuB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AAC9D,UAAA,IAAI,oBAAA,CAAqB,WAAA,GAAc,oBAAA,CAAqB,WAAA,KAAgB,CAAA,EAAG;AAC7E,YAAA,MAAMA,EAAAA,GAAI,IAAI,SAAA,CAAU,yDAAyD,CAAA;AACjF,YAAA,iCAAA,CAAkC,YAAYA,EAAC,CAAA;AAE/C,YAAA,MAAMA,EAAAA;;;AAIV,QAAA,2CAAA,CAA4C,UAAU,CAAA;AACtD,QAAA,mBAAA,CAAoB,MAAM,CAAA;AAC5B,MAAA;AAEgB,MAAA,SAAA,mCAAA,CACd,YACA,KAAA,EAAiC;AAEjC,QAAA,MAAM,SAAS,UAAA,CAAW,6BAAA;AAE1B,QAAA,IAAI,UAAA,CAAW,eAAA,IAAmB,MAAA,CAAO,MAAA,KAAW,UAAA,EAAY;AAC9D,UAAA;;AAGF,QAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAU,GAAK,KAAA;AAC3C,QAAA,IAAI,gBAAA,CAAiB,MAAM,CAAA,EAAG;AAC5B,UAAA,MAAM,IAAI,UAAU,sDAAuD,CAAA;;AAE7E,QAAA,MAAM,iBAAA,GAAoB,oBAAoB,MAAM,CAAA;AAEpD,QAAA,IAAI,UAAA,CAAW,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAC3C,UAAA,MAAM,oBAAA,GAAuB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AAC9D,UAAA,IAAI,gBAAA,CAAiB,oBAAA,CAAqB,MAAM,CAAA,EAAG;AACjD,YAAA,MAAM,IAAI,UACR,4FAA6F,CAAA;;AAGjG,UAAA,iDAAA,CAAkD,UAAU,CAAA;AAC5D,UAAA,oBAAA,CAAqB,MAAA,GAAS,mBAAA,CAAoB,oBAAA,CAAqB,MAAM,CAAA;AAC7E,UAAA,IAAI,oBAAA,CAAqB,eAAe,MAAA,EAAQ;AAC9C,YAAA,0DAAA,CAA2D,YAAY,oBAAoB,CAAA;;;AAI/F,QAAA,IAAI,8BAAA,CAA+B,MAAM,CAAA,EAAG;AAC1C,UAAA,yDAAA,CAA0D,UAAU,CAAA;AACpE,UAAA,IAAI,gCAAA,CAAiC,MAAM,CAAA,KAAM,CAAA,EAAG;AAElD,YAAA,+CAAA,CAAgD,UAAA,EAAY,iBAAA,EAAmB,UAAA,EAAY,UAAU,CAAA;AAChG,UAAA,CAAA,MAAA;AAEL,YAAA,IAAI,UAAA,CAAW,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAE3C,cAAA,gDAAA,CAAiD,UAAU,CAAA;;AAE7D,YAAA,MAAM,eAAA,GAAkB,IAAI,UAAA,CAAW,iBAAA,EAAmB,YAAY,UAAU,CAAA;AAChF,YAAA,gCAAA,CAAiC,MAAA,EAAQ,iBAA0C,KAAK,CAAA;;AAEjF,QAAA,CAAA,MAAA,IAAA,2BAAA,CAA4B,MAAM,CAAA,EAAG;AAE9C,UAAA,+CAAA,CAAgD,UAAA,EAAY,iBAAA,EAAmB,UAAA,EAAY,UAAU,CAAA;AACrG,UAAA,gEAAA,CAAiE,UAAU,CAAA;AACtE,QAAA,CAAA,MAAA;AAEL,UAAA,+CAAA,CAAgD,UAAA,EAAY,iBAAA,EAAmB,UAAA,EAAY,UAAU,CAAA;;AAGvG,QAAA,4CAAA,CAA6C,UAAU,CAAA;AACzD,MAAA;AAEgB,MAAA,SAAA,iCAAA,CAAkC,YAA0CA,EAAAA,EAAM;AAChG,QAAA,MAAM,SAAS,UAAA,CAAW,6BAAA;AAE1B,QAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,UAAA;;AAGF,QAAA,iDAAA,CAAkD,UAAU,CAAA;AAE5D,QAAA,UAAA,CAAW,UAAU,CAAA;AACrB,QAAA,2CAAA,CAA4C,UAAU,CAAA;AACtD,QAAA,mBAAA,CAAoB,QAAQA,EAAC,CAAA;AAC/B,MAAA;AAEgB,MAAA,SAAA,oDAAA,CACd,YACA,WAAA,EAA+C;AAI/C,QAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,KAAA,EAAK;AACrC,QAAA,UAAA,CAAW,mBAAmB,KAAA,CAAM,UAAA;AAEpC,QAAA,4CAAA,CAA6C,UAAU,CAAA;AAEvD,QAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,KAAA,CAAM,QAAQ,KAAA,CAAM,UAAA,EAAY,MAAM,UAAU,CAAA;AAC5E,QAAA,WAAA,CAAY,YAAY,IAA6B,CAAA;AACvD,MAAA;AAEM,MAAA,SAAU,2CACd,UAAA,EAAwC;AAExC,QAAA,IAAI,WAAW,YAAA,KAAiB,IAAA,IAAQ,UAAA,CAAW,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAC/E,UAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AACzD,UAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,eAAA,CAAgB,MAAA,EAChB,eAAA,CAAgB,UAAA,GAAa,eAAA,CAAgB,WAAA,EAC7C,eAAA,CAAgB,UAAA,GAAa,eAAA,CAAgB,WAAW,CAAA;AAEpF,UAAA,MAAM,WAAA,GAAyC,MAAA,CAAO,MAAA,CAAO,yBAAA,CAA0B,SAAS,CAAA;AAChG,UAAA,8BAAA,CAA+B,WAAA,EAAa,YAAY,IAA6B,CAAA;AACrF,UAAA,UAAA,CAAW,YAAA,GAAe,WAAA;;AAE5B,QAAA,OAAO,UAAA,CAAW,YAAA;AACpB,MAAA;AAEA,MAAA,SAAS,2CAA2C,UAAA,EAAwC;AAC1F,QAAA,MAAM,KAAA,GAAQ,WAAW,6BAAA,CAA8B,MAAA;AAEvD,QAAA,IAAI,UAAU,SAAA,EAAW;AACvB,UAAA,OAAO,IAAA;;AAET,QAAA,IAAI,UAAU,QAAA,EAAU;AACtB,UAAA,OAAO,CAAA;;AAGT,QAAA,OAAO,UAAA,CAAW,eAAe,UAAA,CAAW,eAAA;AAC9C,MAAA;AAEgB,MAAA,SAAA,mCAAA,CAAoC,YAA0C,YAAA,EAAoB;AAGhH,QAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AACzD,QAAA,MAAM,KAAA,GAAQ,WAAW,6BAAA,CAA8B,MAAA;AAEvD,QAAA,IAAI,UAAU,QAAA,EAAU;AACtB,UAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,YAAA,MAAM,IAAI,UAAU,kEAAkE,CAAA;;AAEnF,QAAA,CAAA,MAAA;AAEL,UAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,YAAA,MAAM,IAAI,UAAU,iFAAiF,CAAA;;AAEvG,UAAA,IAAI,eAAA,CAAgB,WAAA,GAAc,YAAA,GAAe,eAAA,CAAgB,UAAA,EAAY;AAC3E,YAAA,MAAM,IAAI,WAAW,2BAA2B,CAAA;;;AAIpD,QAAA,eAAA,CAAgB,MAAA,GAAS,mBAAA,CAAoB,eAAA,CAAgB,MAAM,CAAA;AAEnE,QAAA,2CAAA,CAA4C,YAAY,YAAY,CAAA;AACtE,MAAA;AAEgB,MAAA,SAAA,8CAAA,CAA+C,YACA,IAAA,EAAgC;AAI7F,QAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,iBAAA,CAAkB,IAAA,EAAI;AACzD,QAAA,MAAM,KAAA,GAAQ,WAAW,6BAAA,CAA8B,MAAA;AAEvD,QAAA,IAAI,UAAU,QAAA,EAAU;AACtB,UAAA,IAAI,IAAA,CAAK,eAAe,CAAA,EAAG;AACzB,YAAA,MAAM,IAAI,UAAU,kFAAmF,CAAA;;AAEpG,QAAA,CAAA,MAAA;AAEL,UAAA,IAAI,IAAA,CAAK,eAAe,CAAA,EAAG;AACzB,YAAA,MAAM,IAAI,UACR,iGAAkG,CAAA;;;AAKxG,QAAA,IAAI,eAAA,CAAgB,UAAA,GAAa,eAAA,CAAgB,WAAA,KAAgB,KAAK,UAAA,EAAY;AAChF,UAAA,MAAM,IAAI,WAAW,yDAAyD,CAAA;;AAEhF,QAAA,IAAI,eAAA,CAAgB,gBAAA,KAAqB,IAAA,CAAK,MAAA,CAAO,UAAA,EAAY;AAC/D,UAAA,MAAM,IAAI,WAAW,4DAA4D,CAAA;;AAEnF,QAAA,IAAI,eAAA,CAAgB,WAAA,GAAc,IAAA,CAAK,UAAA,GAAa,gBAAgB,UAAA,EAAY;AAC9E,UAAA,MAAM,IAAI,WAAW,yDAAyD,CAAA;;AAGhF,QAAA,MAAM,iBAAiB,IAAA,CAAK,UAAA;AAC5B,QAAA,eAAA,CAAgB,MAAA,GAAS,mBAAA,CAAoB,IAAA,CAAK,MAAM,CAAA;AACxD,QAAA,2CAAA,CAA4C,YAAY,cAAc,CAAA;AACxE,MAAA;AAEgB,MAAA,SAAA,kCAAkC,MAAA,EACA,UAAA,EACA,gBACA,aAAA,EACA,eAAA,EACA,eACA,qBAAA,EAAyC;AAOzF,QAAA,UAAA,CAAW,6BAAA,GAAgC,MAAA;AAE3C,QAAA,UAAA,CAAW,UAAA,GAAa,KAAA;AACxB,QAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AAEtB,QAAA,UAAA,CAAW,YAAA,GAAe,IAAA;AAG1B,QAAA,UAAA,CAAW,MAAA,GAAS,WAAW,eAAA,GAAkB,MAAA;AACjD,QAAA,UAAA,CAAW,UAAU,CAAA;AAErB,QAAA,UAAA,CAAW,eAAA,GAAkB,KAAA;AAC7B,QAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AAEtB,QAAA,UAAA,CAAW,YAAA,GAAe,aAAA;AAE1B,QAAA,UAAA,CAAW,cAAA,GAAiB,aAAA;AAC5B,QAAA,UAAA,CAAW,gBAAA,GAAmB,eAAA;AAE9B,QAAA,UAAA,CAAW,sBAAA,GAAyB,qBAAA;AAEpC,QAAA,UAAA,CAAW,iBAAA,GAAoB,IAAI,WAAA,EAAW;AAE9C,QAAA,MAAA,CAAO,yBAAA,GAA4B,UAAA;AAEnC,QAAA,MAAM,cAAc,cAAA,EAAc;AAClC,QAAA,WAAA,CACE,mBAAA,CAAoB,WAAW,CAAA,EAC/B,MAAK;AACH,UAAA,UAAA,CAAW,QAAA,GAAW,IAAA;AAKtB,UAAA,4CAAA,CAA6C,UAAU,CAAA;AACvD,UAAA,OAAO,IAAA;AAET,QAAA,CAAA,EAAA,CAAAE,EAAAA,KAAI;AACF,UAAA,iCAAA,CAAkC,YAAYA,EAAC,CAAA;AAC/C,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;eAEgB,qDAAA,CACd,MAAA,EACA,sBACA,aAAA,EAAqB;AAErB,QAAA,MAAM,UAAA,GAA2C,MAAA,CAAO,MAAA,CAAO,4BAAA,CAA6B,SAAS,CAAA;AAErG,QAAA,IAAI,cAAA;AACJ,QAAA,IAAI,aAAA;AACJ,QAAA,IAAI,eAAA;AAEJ,QAAA,IAAI,oBAAA,CAAqB,UAAU,MAAA,EAAW;AAC5C,UAAA,cAAA,GAAiB,MAAM,oBAAA,CAAqB,KAAA,CAAO,UAAU,CAAA;AACxD,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,MAAA;;AAEzB,QAAA,IAAI,oBAAA,CAAqB,SAAS,MAAA,EAAW;AAC3C,UAAA,aAAA,GAAgB,MAAM,oBAAA,CAAqB,IAAA,CAAM,UAAU,CAAA;AACtD,QAAA,CAAA,MAAA;AACL,UAAA,aAAA,GAAgB,MAAM,oBAAoB,MAAS,CAAA;;AAErD,QAAA,IAAI,oBAAA,CAAqB,WAAW,MAAA,EAAW;AAC7C,UAAA,eAAA,GAAkB,CAAA,MAAA,KAAU,oBAAA,CAAqB,MAAA,CAAQ,MAAM,CAAA;AAC1D,QAAA,CAAA,MAAA;AACL,UAAA,eAAA,GAAkB,MAAM,oBAAoB,MAAS,CAAA;;AAGvD,QAAA,MAAM,wBAAwB,oBAAA,CAAqB,qBAAA;AACnD,QAAA,IAAI,0BAA0B,CAAA,EAAG;AAC/B,UAAA,MAAM,IAAI,UAAU,8CAA8C,CAAA;;AAGpE,QAAA,iCAAA,CACE,QAAQ,UAAA,EAAY,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,eAAe,qBAAqB,CAAA;AAE5G,MAAA;AAEA,MAAA,SAAS,8BAAA,CAA+B,OAAA,EACA,UAAA,EACA,IAAA,EAAgC;AAKtE,QAAA,OAAA,CAAQ,uCAAA,GAA0C,UAAA;AAClD,QAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAClB,MAAA;AAIA,MAAA,SAAS,+BAA+B,IAAA,EAAY;AAClD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,oCAAA,EAAuC,IAAI,CAAA,gDAAA,CAAkD,CAAA;AACjG,MAAA;AAIA,MAAA,SAAS,wCAAwC,IAAA,EAAY;AAC3D,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,uCAAA,EAA0C,IAAI,CAAA,mDAAA,CAAqD,CAAA;AACvG,MAAA;AC1nCgB,MAAA,SAAA,oBAAA,CAAqB,SACA,OAAA,EAAe;AAClD,QAAA,gBAAA,CAAiB,SAAS,OAAO,CAAA;AACjC,QAAA,MAAM,OAAO,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,IAAA;AACtB,QAAA,OAAO;AACL,UAAA,IAAA,EAAM,SAAS,MAAA,GAAY,MAAA,GAAY,gCAAgC,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,uBAAA,CAAyB;;AAEpH,MAAA;AAEA,MAAA,SAAS,+BAAA,CAAgC,MAAc,OAAA,EAAe;AACpE,QAAA,IAAA,GAAO,GAAG,IAAI,CAAA,CAAA;AACd,QAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,+DAAA,CAAiE,CAAA;;AAE1G,QAAA,OAAO,IAAA;AACT,MAAA;AAEgB,MAAA,SAAA,sBAAA,CACd,SACA,OAAA,EAAe;;AAEf,QAAA,gBAAA,CAAiB,SAAS,OAAO,CAAA;AACjC,QAAA,MAAM,GAAA,GAAA,CAAMJ,GAAAA,GAAA,OAAA,KAAA,IAAA,IAAA,OAAA,KAAA,MAAA,GAAA,MAAA,GAAA,OAAA,CAAS,GAAA,MAAO,IAAA,IAAAA,GAAAA,KAAA,MAAA,GAAAA,GAAAA,GAAA,CAAA;AAC5B,QAAA,OAAO;AACL,UAAA,GAAA,EAAK,uCAAA,CACH,GAAA,EACA,CAAA,EAAG,OAAO,CAAA,sBAAA,CAAwB;;AAGxC,MAAA;ACKM,MAAA,SAAU,gCAAgC,MAAA,EAA0B;AACxE,QAAA,OAAO,IAAI,yBAAyB,MAAoC,CAAA;AAC1E,MAAA;AAIgB,MAAA,SAAA,gCAAA,CACd,QACA,eAAA,EAAmC;AAKlC,QAAA,MAAA,CAAO,OAAA,CAAsC,iBAAA,CAAkB,IAAA,CAAK,eAAe,CAAA;AACtF,MAAA;eAEgB,oCAAA,CAAqC,MAAA,EACA,OACA,IAAA,EAAa;AAChE,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AAItB,QAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,iBAAA,CAAkB,KAAA,EAAK;AACtD,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,eAAA,CAAgB,YAAY,KAAK,CAAA;AAC5B,QAAA,CAAA,MAAA;AACL,UAAA,eAAA,CAAgB,YAAY,KAAK,CAAA;;AAErC,MAAA;AAEM,MAAA,SAAU,qCAAqC,MAAA,EAA0B;AAC7E,QAAA,OAAQ,MAAA,CAAO,QAAqC,iBAAA,CAAkB,MAAA;AACxE,MAAA;AAEM,MAAA,SAAU,4BAA4B,MAAA,EAA0B;AACpE,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AAEtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,0BAAA,CAA2B,MAAM,CAAA,EAAG;AACvC,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;YAiBa,wBAAA,CAAwB;AAYnC,QAAA,WAAA,CAAY,MAAA,EAAkC;AAC5C,UAAA,sBAAA,CAAuB,MAAA,EAAQ,GAAG,0BAA0B,CAAA;AAC5D,UAAA,oBAAA,CAAqB,QAAQ,iBAAiB,CAAA;AAE9C,UAAA,IAAI,sBAAA,CAAuB,MAAM,CAAA,EAAG;AAClC,YAAA,MAAM,IAAI,UAAU,6EAA6E,CAAA;;AAGnG,UAAA,IAAI,CAAC,8BAAA,CAA+B,MAAA,CAAO,yBAAyB,CAAA,EAAG;AACrE,YAAA,MAAM,IAAI,UAAU,6FACV,CAAA;;AAGZ,UAAA,qCAAA,CAAsC,MAAM,MAAM,CAAA;AAElD,UAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,WAAA,EAAW;;;;;;AAO1C,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,IAAI,CAAC,0BAAA,CAA2B,IAAI,CAAA,EAAG;AACrC,YAAA,OAAO,mBAAA,CAAoB,6BAAA,CAA8B,QAAQ,CAAC,CAAA;;AAGpE,UAAA,OAAO,IAAA,CAAK,cAAA;;;;;AAMd,QAAA,MAAA,CAAO,SAAc,MAAA,EAAS;AAC5B,UAAA,IAAI,CAAC,0BAAA,CAA2B,IAAI,CAAA,EAAG;AACrC,YAAA,OAAO,mBAAA,CAAoB,6BAAA,CAA8B,QAAQ,CAAC,CAAA;;AAGpE,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,OAAO,mBAAA,CAAoB,mBAAA,CAAoB,QAAQ,CAAC,CAAA;;AAG1D,UAAA,OAAO,iCAAA,CAAkC,MAAM,MAAM,CAAA;;QAYvD,IAAA,CACE,IAAA,EACA,UAAA,GAAqE,EAAA,EAAE;AAEvE,UAAA,IAAI,CAAC,0BAAA,CAA2B,IAAI,CAAA,EAAG;AACrC,YAAA,OAAO,mBAAA,CAAoB,6BAAA,CAA8B,MAAM,CAAC,CAAA;;AAGlE,UAAA,IAAI,CAAC,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAG;AAC7B,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,mCAAmC,CAAC,CAAA;;AAE/E,UAAA,IAAI,IAAA,CAAK,eAAe,CAAA,EAAG;AACzB,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,oCAAoC,CAAC,CAAA;;AAEhF,UAAA,IAAI,IAAA,CAAK,MAAA,CAAO,UAAA,KAAe,CAAA,EAAG;AAChC,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,CAAA,2CAAA,CAA6C,CAAC,CAAA;;AAEzF,UAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,EAAG;AACjC,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,iCAAkC,CAAC,CAAA;;AAG9E,UAAA,IAAI,OAAA;AACJ,UAAA,IAAI;AACF,YAAA,OAAA,GAAU,sBAAA,CAAuB,YAAY,SAAS,CAAA;mBAC/CE,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;AAE9B,UAAA,MAAM,MAAM,OAAA,CAAQ,GAAA;AACpB,UAAA,IAAI,QAAQ,CAAA,EAAG;AACb,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,oCAAoC,CAAC,CAAA;;AAEhF,UAAA,IAAI,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AACrB,YAAA,IAAI,GAAA,GAAO,KAA+B,MAAA,EAAQ;AAChD,cAAA,OAAO,mBAAA,CAAoB,IAAI,UAAA,CAAW,yDAA0D,CAAC,CAAA;;AAE9F,UAAA,CAAA,MAAA,IAAA,GAAA,GAAM,KAAK,UAAA,EAAY;AAChC,YAAA,OAAO,mBAAA,CAAoB,IAAI,UAAA,CAAW,6DAA8D,CAAC,CAAA;;AAG3G,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,OAAO,mBAAA,CAAoB,mBAAA,CAAoB,WAAW,CAAC,CAAA;;AAG7D,UAAA,IAAI,cAAA;AACJ,UAAA,IAAI,aAAA;AACJ,UAAA,MAAM,OAAA,GAAU,UAAA,CAA4C,CAAC,OAAA,EAAS,MAAA,KAAU;AAC9E,YAAA,cAAA,GAAiB,OAAA;AACjB,YAAA,aAAA,GAAgB,MAAA;UAClB,CAAC,CAAA;AACD,UAAA,MAAM,eAAA,GAAsC;AAC1C,YAAA,WAAA,EAAa,WAAS,cAAA,CAAe,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAClE,YAAA,WAAA,EAAa,WAAS,cAAA,CAAe,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,MAAM,CAAA;YACjE,WAAA,EAAa,CAAAA,EAAAA,KAAK,aAAA,CAAcA,EAAC;;AAEnC,UAAA,4BAAA,CAA6B,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,eAAe,CAAA;AAC7D,UAAA,OAAO,OAAA;;;;;;;;;;;QAYT,WAAA,GAAW;AACT,UAAA,IAAI,CAAC,0BAAA,CAA2B,IAAI,CAAA,EAAG;AACrC,YAAA,MAAM,8BAA8B,aAAa,CAAA;;AAGnD,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA;;AAGF,UAAA,+BAAA,CAAgC,IAAI,CAAA;;AAEvC;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,yBAAyB,SAAA,EAAW;QAC1D,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,IAAA,EAAM,EAAE,YAAY,IAAA,EAAI;QACxB,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,MAAA,EAAQ,EAAE,YAAY,IAAA;OACvB,CAAA;AACD,MAAA,eAAA,CAAgB,wBAAA,CAAyB,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AACnE,MAAA,eAAA,CAAgB,wBAAA,CAAyB,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA;AAC/D,MAAA,eAAA,CAAgB,wBAAA,CAAyB,SAAA,CAAU,WAAA,EAAa,aAAa,CAAA;AAC7E,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,wBAAA,CAAyB,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAC5E,KAAA,EAAO,0BAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIM,MAAA,SAAU,2BAA2BH,EAAAA,EAAM;AAC/C,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,mBAAmB,CAAA,EAAG;AACjE,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,wBAAA;AACtB,MAAA;AAEM,MAAA,SAAU,4BAAA,CACd,MAAA,EACA,IAAA,EACA,GAAA,EACA,eAAA,EAAmC;AAEnC,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,MAAA,CAAO,UAAA,GAAa,IAAA;AAEpB,QAAA,IAAI,MAAA,CAAO,WAAW,SAAA,EAAW;AAC/B,UAAA,eAAA,CAAgB,WAAA,CAAY,OAAO,YAAY,CAAA;AAC1C,QAAA,CAAA,MAAA;AACL,UAAA,oCAAA,CACE,MAAA,CAAO,yBAAA,EACP,IAAA,EACA,GAAA,EACA,eAAe,CAAA;;AAGrB,MAAA;AAEM,MAAA,SAAU,gCAAgC,MAAA,EAAgC;AAC9E,QAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,QAAA,MAAMG,EAAAA,GAAI,IAAI,SAAA,CAAU,qBAAqB,CAAA;AAC7C,QAAA,6CAAA,CAA8C,QAAQA,EAAC,CAAA;AACzD,MAAA;AAEgB,MAAA,SAAA,6CAAA,CAA8C,QAAkCA,EAAAA,EAAM;AACpG,QAAA,MAAM,mBAAmB,MAAA,CAAO,iBAAA;AAChC,QAAA,MAAA,CAAO,iBAAA,GAAoB,IAAI,WAAA,EAAW;AAC1C,QAAA,gBAAA,CAAiB,QAAQ,CAAA,eAAA,KAAkB;AACzC,UAAA,eAAA,CAAgB,YAAYA,EAAC,CAAA;QAC/B,CAAC,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,8BAA8B,IAAA,EAAY;AACjD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,mCAAA,EAAsC,IAAI,CAAA,+CAAA,CAAiD,CAAA;AAC/F,MAAA;ACjUgB,MAAA,SAAA,oBAAA,CAAqB,UAA2B,UAAA,EAAkB;AAChF,QAAA,MAAM,EAAE,eAAa,GAAK,QAAA;AAE1B,QAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,UAAA,OAAO,UAAA;;AAGT,QAAA,IAAI,WAAA,CAAY,aAAa,CAAA,IAAK,aAAA,GAAgB,CAAA,EAAG;AACnD,UAAA,MAAM,IAAI,WAAW,uBAAuB,CAAA;;AAG9C,QAAA,OAAO,aAAA;AACT,MAAA;AAEM,MAAA,SAAU,qBAAwB,QAAA,EAA4B;AAClE,QAAA,MAAM,EAAE,MAAI,GAAK,QAAA;AAEjB,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,OAAO,MAAM,CAAA;;AAGf,QAAA,OAAO,IAAA;AACT,MAAA;ACtBgB,MAAA,SAAA,sBAAA,CAA0B,MACA,OAAA,EAAe;AACvD,QAAA,gBAAA,CAAiB,MAAM,OAAO,CAAA;AAC9B,QAAA,MAAM,gBAAgB,IAAA,KAAI,IAAA,IAAJ,IAAA,KAAA,MAAA,GAAA,SAAA,IAAA,CAAM,aAAA;AAC5B,QAAA,MAAM,OAAO,IAAA,KAAI,IAAA,IAAJ,IAAA,KAAA,MAAA,GAAA,SAAA,IAAA,CAAM,IAAA;AACnB,QAAA,OAAO;AACL,UAAA,aAAA,EAAe,aAAA,KAAkB,MAAA,GAAY,MAAA,GAAY,yBAAA,CAA0B,aAAa,CAAA;AAChG,UAAA,IAAA,EAAM,SAAS,MAAA,GAAY,MAAA,GAAY,2BAA2B,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,uBAAA,CAAyB;;AAE/G,MAAA;AAEA,MAAA,SAAS,0BAAA,CAA8B,IACA,OAAA,EAAe;AACpD,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAA,KAAA,KAAS,yBAAA,CAA0B,EAAA,CAAG,KAAK,CAAC,CAAA;AACrD,MAAA;ACNgB,MAAA,SAAA,qBAAA,CAAyB,UACA,OAAA,EAAe;AACtD,QAAA,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAClC,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,MAAM,OAAO,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,IAAA;AACvB,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,OAAO;UACL,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,kCAAA,CAAmC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;UAC3F,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,kCAAA,CAAmC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;UAC3F,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,kCAAA,CAAmC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;UAC3F,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,kCAAA,CAAmC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;AAC3F,UAAA;;AAEJ,MAAA;AAEA,MAAA,SAAS,kCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,MAAA,KAAgB,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,MAAM,CAAC,CAAA;AAC5D,MAAA;AAEA,MAAA,SAAS,kCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,MAAM,WAAA,CAAY,EAAA,EAAI,QAAA,EAAU,EAAE,CAAA;AAC3C,MAAA;AAEA,MAAA,SAAS,kCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAA,KAAgD,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,UAAU,CAAC,CAAA;AAChG,MAAA;AAEA,MAAA,SAAS,kCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,OAAU,UAAA,KAAgD,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AACjH,MAAA;ACrEgB,MAAA,SAAA,oBAAA,CAAqBH,IAAY,OAAA,EAAe;AAC9D,QAAA,IAAI,CAAC,gBAAA,CAAiBA,EAAC,CAAA,EAAG;AACxB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,yBAAA,CAA2B,CAAA;;AAE7D,MAAA;AC2BM,MAAA,SAAUM,eAAc,KAAA,EAAc;AAC1C,QAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,UAAA,OAAO,KAAA;;AAET,QAAA,IAAI;AACF,UAAA,OAAO,OAAQ,MAAsB,OAAA,KAAY,SAAA;iBACjDL,GAAAA,EAAM;AAEN,UAAA,OAAO,KAAA;;AAEX,MAAA;AAsBA,MAAA,MAAM,uBAAA,GAA0B,OAAQ,eAAA,KAA4B,UAAA;eAOpD,qBAAA,GAAqB;AACnC,QAAA,IAAI,uBAAA,EAAyB;AAC3B,UAAA,OAAO,IAAK,eAAA,EAA8C;;AAE5D,QAAA,OAAO,MAAA;AACT,MAAA;ACnBA,MAAA,MAAM,cAAA,CAAc;AAuBlB,QAAA,WAAA,CAAY,iBAAA,GAA0D,EAAA,EAC1D,WAAA,GAAqD,EAAA,EAAE;AACjE,UAAA,IAAI,sBAAsB,MAAA,EAAW;AACnC,YAAA,iBAAA,GAAoB,IAAA;AACf,UAAA,CAAA,MAAA;AACL,YAAA,YAAA,CAAa,mBAAmB,iBAAiB,CAAA;;AAGnD,UAAA,MAAM,QAAA,GAAW,sBAAA,CAAuB,WAAA,EAAa,kBAAkB,CAAA;AACvE,UAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,iBAAA,EAAmB,iBAAiB,CAAA;AAEjF,UAAA,wBAAA,CAAyB,IAAI,CAAA;AAE7B,UAAA,MAAM,OAAO,cAAA,CAAe,IAAA;AAC5B,UAAA,IAAI,SAAS,MAAA,EAAW;AACtB,YAAA,MAAM,IAAI,WAAW,2BAA2B,CAAA;;AAGlD,UAAA,MAAM,aAAA,GAAgB,qBAAqB,QAAQ,CAAA;AACnD,UAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,QAAA,EAAU,CAAC,CAAA;AAEtD,UAAA,sDAAA,CAAuD,IAAA,EAAM,cAAA,EAAgB,aAAA,EAAe,aAAa,CAAA;;;;;AAM3G,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMM,4BAA0B,QAAQ,CAAA;;AAG1C,UAAA,OAAO,uBAAuB,IAAI,CAAA;;;;;;;;;;;AAYpC,QAAA,KAAA,CAAM,SAAc,MAAA,EAAS;AAC3B,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,OAAO,mBAAA,CAAoBA,2BAAAA,CAA0B,OAAO,CAAC,CAAA;;AAG/D,UAAA,IAAI,sBAAA,CAAuB,IAAI,CAAA,EAAG;AAChC,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,iDAAiD,CAAC,CAAA;;AAG7F,UAAA,OAAO,mBAAA,CAAoB,MAAM,MAAM,CAAA;;;;;;;;;;QAWzC,KAAA,GAAK;AACH,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,OAAO,mBAAA,CAAoBA,2BAAAA,CAA0B,OAAO,CAAC,CAAA;;AAG/D,UAAA,IAAI,sBAAA,CAAuB,IAAI,CAAA,EAAG;AAChC,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,iDAAiD,CAAC,CAAA;;AAG7F,UAAA,IAAI,mCAAA,CAAoC,IAAI,CAAA,EAAG;AAC7C,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,wCAAwC,CAAC,CAAA;;AAGpF,UAAA,OAAO,oBAAoB,IAAI,CAAA;;;;;;;;;;QAWjC,SAAA,GAAS;AACP,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMA,4BAA0B,WAAW,CAAA;;AAG7C,UAAA,OAAO,mCAAmC,IAAI,CAAA;;AAEjD;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,SAAA,EAAW;QAChD,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,SAAA,EAAW,EAAE,YAAY,IAAA,EAAI;QAC7B,MAAA,EAAQ,EAAE,YAAY,IAAA;OACvB,CAAA;AACD,MAAA,eAAA,CAAgB,cAAA,CAAe,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACvD,MAAA,eAAA,CAAgB,cAAA,CAAe,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACvD,MAAA,eAAA,CAAgB,cAAA,CAAe,SAAA,CAAU,SAAA,EAAW,WAAW,CAAA;AAC/D,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,cAAA,CAAe,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAClE,KAAA,EAAO,gBAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AA0BA,MAAA,SAAS,mCAAsC,MAAA,EAAyB;AACtE,QAAA,OAAO,IAAI,4BAA4B,MAAM,CAAA;AAC/C,MAAA;AAGA,MAAA,SAAS,oBAAA,CAAwB,gBACA,cAAA,EACA,cAAA,EACA,gBACA,aAAA,GAAgB,CAAA,EAChB,aAAA,GAAgD,MAAM,CAAA,EAAC;AAGtF,QAAA,MAAM,MAAA,GAA4B,MAAA,CAAO,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA;AACxE,QAAA,wBAAA,CAAyB,MAAM,CAAA;AAE/B,QAAA,MAAM,UAAA,GAAiD,MAAA,CAAO,MAAA,CAAO,+BAAA,CAAgC,SAAS,CAAA;AAE9G,QAAA,oCAAA,CAAqC,QAAQ,UAAA,EAAY,cAAA,EAAgB,gBAAgB,cAAA,EACpD,cAAA,EAAgB,eAAe,aAAa,CAAA;AACjF,QAAA,OAAO,MAAA;AACT,MAAA;AAEA,MAAA,SAAS,yBAA4B,MAAA,EAAyB;AAC5D,QAAA,MAAA,CAAO,MAAA,GAAS,UAAA;AAIhB,QAAA,MAAA,CAAO,YAAA,GAAe,MAAA;AAEtB,QAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AAIjB,QAAA,MAAA,CAAO,yBAAA,GAA4B,MAAA;AAInC,QAAA,MAAA,CAAO,cAAA,GAAiB,IAAI,WAAA,EAAW;AAIvC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAI/B,QAAA,MAAA,CAAO,aAAA,GAAgB,MAAA;AAIvB,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAG/B,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAG9B,QAAA,MAAA,CAAO,aAAA,GAAgB,KAAA;AACzB,MAAA;AAEA,MAAA,SAAS,iBAAiBP,EAAAA,EAAU;AAClC,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,2BAA2B,CAAA,EAAG;AACzE,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,cAAA;AACtB,MAAA;AAEA,MAAA,SAAS,uBAAuB,MAAA,EAAsB;AAGpD,QAAA,IAAI,MAAA,CAAO,YAAY,MAAA,EAAW;AAChC,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,SAAS,mBAAA,CAAoB,QAAwB,MAAA,EAAW;;AAC9D,QAAA,IAAI,MAAA,CAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,WAAW,SAAA,EAAW;AAC7D,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAEtC,QAAA,MAAA,CAAO,0BAA0B,YAAA,GAAe,MAAA;AAChD,QAAA,CAAAC,GAAAA,GAAA,MAAA,CAAO,yBAAA,CAA0B,gBAAA,MAAgB,IAAA,IAAAA,QAAA,MAAA,GAAA,MAAA,GAAAA,GAAAA,CAAE,KAAA,CAAM,MAAM,CAAA;AAK/D,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,QAAA,IAAI,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,SAAA,EAAW;AAC7C,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAEtC,QAAA,IAAI,MAAA,CAAO,yBAAyB,MAAA,EAAW;AAC7C,UAAA,OAAO,OAAO,oBAAA,CAAqB,QAAA;;AAKrC,QAAA,IAAI,kBAAA,GAAqB,KAAA;AACzB,QAAA,IAAI,UAAU,UAAA,EAAY;AACxB,UAAA,kBAAA,GAAqB,IAAA;AAErB,UAAA,MAAA,GAAS,MAAA;;AAGX,QAAA,MAAM,OAAA,GAAU,UAAA,CAAsB,CAAC,OAAA,EAAS,MAAA,KAAU;AACxD,UAAA,MAAA,CAAO,oBAAA,GAAuB;YAC5B,QAAA,EAAU,MAAA;YACV,QAAA,EAAU,OAAA;YACV,OAAA,EAAS,MAAA;YACT,OAAA,EAAS,MAAA;YACT,mBAAA,EAAqB;;QAEzB,CAAC,CAAA;AACD,QAAA,MAAA,CAAO,qBAAsB,QAAA,GAAW,OAAA;AAExC,QAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,UAAA,2BAAA,CAA4B,QAAQ,MAAM,CAAA;;AAG5C,QAAA,OAAO,OAAA;AACT,MAAA;AAEA,MAAA,SAAS,oBAAoB,MAAA,EAA2B;AACtD,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AACrB,QAAA,IAAI,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,SAAA,EAAW;AAC7C,UAAA,OAAO,oBAAoB,IAAI,SAAA,CAC7B,CAAA,eAAA,EAAkB,KAAK,2DAA2D,CAAC,CAAA;;AAMvF,QAAA,MAAM,OAAA,GAAU,UAAA,CAAsB,CAAC,OAAA,EAAS,MAAA,KAAU;AACxD,UAAA,MAAM,YAAA,GAA6B;YACjC,QAAA,EAAU,OAAA;YACV,OAAA,EAAS;;AAGX,UAAA,MAAA,CAAO,aAAA,GAAgB,YAAA;QACzB,CAAC,CAAA;AAED,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,MAAA,KAAW,MAAA,IAAa,MAAA,CAAO,aAAA,IAAiB,UAAU,UAAA,EAAY;AACxE,UAAA,gCAAA,CAAiC,MAAM,CAAA;;AAGzC,QAAA,oCAAA,CAAqC,OAAO,yBAAyB,CAAA;AAErE,QAAA,OAAO,OAAA;AACT,MAAA;AAIA,MAAA,SAAS,8BAA8B,MAAA,EAAsB;AAI3D,QAAA,MAAM,OAAA,GAAU,UAAA,CAAsB,CAAC,OAAA,EAAS,MAAA,KAAU;AACxD,UAAA,MAAM,YAAA,GAA6B;YACjC,QAAA,EAAU,OAAA;YACV,OAAA,EAAS;;AAGX,UAAA,MAAA,CAAO,cAAA,CAAe,KAAK,YAAY,CAAA;QACzC,CAAC,CAAA;AAED,QAAA,OAAO,OAAA;AACT,MAAA;AAEA,MAAA,SAAS,+BAAA,CAAgC,QAAwB,KAAA,EAAU;AACzE,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,QAAA,IAAI,UAAU,UAAA,EAAY;AACxB,UAAA,2BAAA,CAA4B,QAAQ,KAAK,CAAA;AACzC,UAAA;;AAIF,QAAA,4BAAA,CAA6B,MAAM,CAAA;AACrC,MAAA;AAEA,MAAA,SAAS,2BAAA,CAA4B,QAAwB,MAAA,EAAW;AAItE,QAAA,MAAM,aAAa,MAAA,CAAO,yBAAA;AAG1B,QAAA,MAAA,CAAO,MAAA,GAAS,UAAA;AAChB,QAAA,MAAA,CAAO,YAAA,GAAe,MAAA;AACtB,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,qDAAA,CAAsD,QAAQ,MAAM,CAAA;;AAGtE,QAAA,IAAI,CAAC,wCAAA,CAAyC,MAAM,CAAA,IAAK,WAAW,QAAA,EAAU;AAC5E,UAAA,4BAAA,CAA6B,MAAM,CAAA;;AAEvC,MAAA;AAEA,MAAA,SAAS,6BAA6B,MAAA,EAAsB;AAG1D,QAAA,MAAA,CAAO,MAAA,GAAS,SAAA;AAChB,QAAA,MAAA,CAAO,yBAAA,CAA0B,UAAU,CAAA,EAAC;AAE5C,QAAA,MAAM,cAAc,MAAA,CAAO,YAAA;AAC3B,QAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,CAAA,YAAA,KAAe;AAC3C,UAAA,YAAA,CAAa,QAAQ,WAAW,CAAA;QAClC,CAAC,CAAA;AACD,QAAA,MAAA,CAAO,cAAA,GAAiB,IAAI,WAAA,EAAW;AAEvC,QAAA,IAAI,MAAA,CAAO,yBAAyB,MAAA,EAAW;AAC7C,UAAA,iDAAA,CAAkD,MAAM,CAAA;AACxD,UAAA;;AAGF,QAAA,MAAM,eAAe,MAAA,CAAO,oBAAA;AAC5B,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAE9B,QAAA,IAAI,aAAa,mBAAA,EAAqB;AACpC,UAAA,YAAA,CAAa,QAAQ,WAAW,CAAA;AAChC,UAAA,iDAAA,CAAkD,MAAM,CAAA;AACxD,UAAA;;AAGF,QAAA,MAAM,UAAU,MAAA,CAAO,yBAAA,CAA0B,UAAU,CAAA,CAAE,aAAa,OAAO,CAAA;AACjF,QAAA,WAAA,CACE,SACA,MAAK;AACH,UAAA,YAAA,CAAa,QAAA,EAAQ;AACrB,UAAA,iDAAA,CAAkD,MAAM,CAAA;AACxD,UAAA,OAAO,IAAA;AACT,QAAA,CAAA,EACA,CAAC,MAAA,KAAe;AACd,UAAA,YAAA,CAAa,QAAQ,MAAM,CAAA;AAC3B,UAAA,iDAAA,CAAkD,MAAM,CAAA;AACxD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AACL,MAAA;AAEA,MAAA,SAAS,kCAAkC,MAAA,EAAsB;AAE/D,QAAA,MAAA,CAAO,qBAAA,CAAuB,SAAS,MAAS,CAAA;AAChD,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AACjC,MAAA;AAEA,MAAA,SAAS,0CAAA,CAA2C,QAAwB,KAAA,EAAU;AAEpF,QAAA,MAAA,CAAO,qBAAA,CAAuB,QAAQ,KAAK,CAAA;AAC3C,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAI/B,QAAA,+BAAA,CAAgC,QAAQ,KAAK,CAAA;AAC/C,MAAA;AAEA,MAAA,SAAS,kCAAkC,MAAA,EAAsB;AAE/D,QAAA,MAAA,CAAO,qBAAA,CAAuB,SAAS,MAAS,CAAA;AAChD,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAE/B,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAIrB,QAAA,IAAI,UAAU,UAAA,EAAY;AAExB,UAAA,MAAA,CAAO,YAAA,GAAe,MAAA;AACtB,UAAA,IAAI,MAAA,CAAO,yBAAyB,MAAA,EAAW;AAC7C,YAAA,MAAA,CAAO,qBAAqB,QAAA,EAAQ;AACpC,YAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;;;AAIlC,QAAA,MAAA,CAAO,MAAA,GAAS,QAAA;AAEhB,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,iCAAA,CAAkC,MAAM,CAAA;;AAK5C,MAAA;AAEA,MAAA,SAAS,0CAAA,CAA2C,QAAwB,KAAA,EAAU;AAEpF,QAAA,MAAA,CAAO,qBAAA,CAAuB,QAAQ,KAAK,CAAA;AAC3C,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAK/B,QAAA,IAAI,MAAA,CAAO,yBAAyB,MAAA,EAAW;AAC7C,UAAA,MAAA,CAAO,oBAAA,CAAqB,QAAQ,KAAK,CAAA;AACzC,UAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;;AAEhC,QAAA,+BAAA,CAAgC,QAAQ,KAAK,CAAA;AAC/C,MAAA;AAGA,MAAA,SAAS,oCAAoC,MAAA,EAAsB;AACjE,QAAA,IAAI,MAAA,CAAO,aAAA,KAAkB,MAAA,IAAa,MAAA,CAAO,0BAA0B,MAAA,EAAW;AACpF,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,SAAS,yCAAyC,MAAA,EAAsB;AACtE,QAAA,IAAI,MAAA,CAAO,qBAAA,KAA0B,MAAA,IAAa,MAAA,CAAO,0BAA0B,MAAA,EAAW;AAC5F,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,SAAS,uCAAuC,MAAA,EAAsB;AAGpE,QAAA,MAAA,CAAO,wBAAwB,MAAA,CAAO,aAAA;AACtC,QAAA,MAAA,CAAO,aAAA,GAAgB,MAAA;AACzB,MAAA;AAEA,MAAA,SAAS,4CAA4C,MAAA,EAAsB;AAGzE,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA,CAAO,cAAA,CAAe,KAAA,EAAK;AAC5D,MAAA;AAEA,MAAA,SAAS,kDAAkD,MAAA,EAAsB;AAE/E,QAAA,IAAI,MAAA,CAAO,kBAAkB,MAAA,EAAW;AAGtC,UAAA,MAAA,CAAO,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,YAAY,CAAA;AAChD,UAAA,MAAA,CAAO,aAAA,GAAgB,MAAA;;AAEzB,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,gCAAA,CAAiC,MAAA,EAAQ,OAAO,YAAY,CAAA;;AAEhE,MAAA;AAEA,MAAA,SAAS,gCAAA,CAAiC,QAAwB,YAAA,EAAqB;AAIrF,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,MAAA,KAAW,MAAA,IAAa,YAAA,KAAiB,MAAA,CAAO,aAAA,EAAe;AACjE,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,8BAAA,CAA+B,MAAM,CAAA;AAChC,UAAA,CAAA,MAAA;AAGL,YAAA,gCAAA,CAAiC,MAAM,CAAA;;;AAI3C,QAAA,MAAA,CAAO,aAAA,GAAgB,YAAA;AACzB,MAAA;YAOa,2BAAA,CAA2B;AAoBtC,QAAA,WAAA,CAAY,MAAA,EAAyB;AACnC,UAAA,sBAAA,CAAuB,MAAA,EAAQ,GAAG,6BAA6B,CAAA;AAC/D,UAAA,oBAAA,CAAqB,QAAQ,iBAAiB,CAAA;AAE9C,UAAA,IAAI,sBAAA,CAAuB,MAAM,CAAA,EAAG;AAClC,YAAA,MAAM,IAAI,UAAU,6EAA6E,CAAA;;AAGnG,UAAA,IAAA,CAAK,oBAAA,GAAuB,MAAA;AAC5B,UAAA,MAAA,CAAO,OAAA,GAAU,IAAA;AAEjB,UAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,UAAA,IAAI,UAAU,UAAA,EAAY;AACxB,YAAA,IAAI,CAAC,mCAAA,CAAoC,MAAM,CAAA,IAAK,OAAO,aAAA,EAAe;AACxE,cAAA,mCAAA,CAAoC,IAAI,CAAA;AACnC,YAAA,CAAA,MAAA;AACL,cAAA,6CAAA,CAA8C,IAAI,CAAA;;AAGpD,YAAA,oCAAA,CAAqC,IAAI,CAAA;AAChC,UAAA,CAAA,MAAA,IAAA,KAAA,KAAU,UAAA,EAAY;AAC/B,YAAA,6CAAA,CAA8C,IAAA,EAAM,OAAO,YAAY,CAAA;AACvE,YAAA,oCAAA,CAAqC,IAAI,CAAA;AAChC,UAAA,CAAA,MAAA,IAAA,KAAA,KAAU,QAAA,EAAU;AAC7B,YAAA,6CAAA,CAA8C,IAAI,CAAA;AAClD,YAAA,8CAAA,CAA+C,IAAI,CAAA;AAC9C,UAAA,CAAA,MAAA;AAGL,YAAA,MAAM,cAAc,MAAA,CAAO,YAAA;AAC3B,YAAA,6CAAA,CAA8C,MAAM,WAAW,CAAA;AAC/D,YAAA,8CAAA,CAA+C,MAAM,WAAW,CAAA;;;;;;;AAQpE,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,QAAQ,CAAC,CAAA;;AAGvE,UAAA,OAAO,IAAA,CAAK,cAAA;;;;;;;;;;AAWd,QAAA,IAAI,WAAA,GAAW;AACb,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,MAAM,iCAAiC,aAAa,CAAA;;AAGtD,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,MAAM,2BAA2B,aAAa,CAAA;;AAGhD,UAAA,OAAO,0CAA0C,IAAI,CAAA;;;;;;;;;;AAWvD,QAAA,IAAI,KAAA,GAAK;AACP,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,OAAO,CAAC,CAAA;;AAGtE,UAAA,OAAO,IAAA,CAAK,aAAA;;;;;AAMd,QAAA,KAAA,CAAM,SAAc,MAAA,EAAS;AAC3B,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,OAAO,CAAC,CAAA;;AAGtE,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,OAAO,mBAAA,CAAoB,0BAAA,CAA2B,OAAO,CAAC,CAAA;;AAGhE,UAAA,OAAO,gCAAA,CAAiC,MAAM,MAAM,CAAA;;;;;QAMtD,KAAA,GAAK;AACH,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,OAAO,CAAC,CAAA;;AAGtE,UAAA,MAAM,SAAS,IAAA,CAAK,oBAAA;AAEpB,UAAA,IAAI,WAAW,MAAA,EAAW;AACxB,YAAA,OAAO,mBAAA,CAAoB,0BAAA,CAA2B,OAAO,CAAC,CAAA;;AAGhE,UAAA,IAAI,mCAAA,CAAoC,MAAM,CAAA,EAAG;AAC/C,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,wCAAwC,CAAC,CAAA;;AAGpF,UAAA,OAAO,iCAAiC,IAAI,CAAA;;;;;;;;;;;;QAa9C,WAAA,GAAW;AACT,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,MAAM,iCAAiC,aAAa,CAAA;;AAGtD,UAAA,MAAM,SAAS,IAAA,CAAK,oBAAA;AAEpB,UAAA,IAAI,WAAW,MAAA,EAAW;AACxB,YAAA;;AAKF,UAAA,kCAAA,CAAmC,IAAI,CAAA;;AAazC,QAAA,KAAA,CAAM,QAAW,MAAA,EAAU;AACzB,UAAA,IAAI,CAAC,6BAAA,CAA8B,IAAI,CAAA,EAAG;AACxC,YAAA,OAAO,mBAAA,CAAoB,gCAAA,CAAiC,OAAO,CAAC,CAAA;;AAGtE,UAAA,IAAI,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3C,YAAA,OAAO,mBAAA,CAAoB,0BAAA,CAA2B,UAAU,CAAC,CAAA;;AAGnE,UAAA,OAAO,gCAAA,CAAiC,MAAM,KAAK,CAAA;;AAEtD;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,4BAA4B,SAAA,EAAW;QAC7D,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,KAAA,EAAO,EAAE,YAAY,IAAA;OACtB,CAAA;AACD,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACpE,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACpE,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,WAAA,EAAa,aAAa,CAAA;AAChF,MAAA,eAAA,CAAgB,2BAAA,CAA4B,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACpE,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,2BAAA,CAA4B,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAC/E,KAAA,EAAO,6BAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,8BAAuCD,EAAAA,EAAM;AACpD,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,sBAAsB,CAAA,EAAG;AACpE,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,2BAAA;AACtB,MAAA;AAIA,MAAA,SAAS,gCAAA,CAAiC,QAAqC,MAAA,EAAW;AACxF,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,OAAO,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAC3C,MAAA;AAEA,MAAA,SAAS,iCAAiC,MAAA,EAAmC;AAC3E,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,OAAO,oBAAoB,MAAM,CAAA;AACnC,MAAA;AAEA,MAAA,SAAS,qDAAqD,MAAA,EAAmC;AAC/F,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AACrB,QAAA,IAAI,mCAAA,CAAoC,MAAM,CAAA,IAAK,KAAA,KAAU,QAAA,EAAU;AACrE,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,QAAA,IAAI,UAAU,SAAA,EAAW;AACvB,UAAA,OAAO,mBAAA,CAAoB,OAAO,YAAY,CAAA;;AAKhD,QAAA,OAAO,iCAAiC,MAAM,CAAA;AAChD,MAAA;AAEA,MAAA,SAAS,sDAAA,CAAuD,QAAqC,KAAA,EAAU;AAC7G,QAAA,IAAI,MAAA,CAAO,wBAAwB,SAAA,EAAW;AAC5C,UAAA,gCAAA,CAAiC,QAAQ,KAAK,CAAA;AACzC,QAAA,CAAA,MAAA;AACL,UAAA,yCAAA,CAA0C,QAAQ,KAAK,CAAA;;AAE3D,MAAA;AAEA,MAAA,SAAS,qDAAA,CAAsD,QAAqC,KAAA,EAAU;AAC5G,QAAA,IAAI,MAAA,CAAO,uBAAuB,SAAA,EAAW;AAC3C,UAAA,+BAAA,CAAgC,QAAQ,KAAK,CAAA;AACxC,QAAA,CAAA,MAAA;AACL,UAAA,wCAAA,CAAyC,QAAQ,KAAK,CAAA;;AAE1D,MAAA;AAEA,MAAA,SAAS,0CAA0C,MAAA,EAAmC;AACpF,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AACtB,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,QAAA,IAAI,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,UAAA,EAAY;AAC/C,UAAA,OAAO,IAAA;;AAGT,QAAA,IAAI,UAAU,QAAA,EAAU;AACtB,UAAA,OAAO,CAAA;;AAGT,QAAA,OAAO,6CAAA,CAA8C,OAAO,yBAAyB,CAAA;AACvF,MAAA;AAEA,MAAA,SAAS,mCAAmC,MAAA,EAAmC;AAC7E,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,MAAM,aAAA,GAAgB,IAAI,SAAA,CACxB,CAAA,gFAAA,CAAkF,CAAA;AAEpF,QAAA,qDAAA,CAAsD,QAAQ,aAAa,CAAA;AAI3E,QAAA,sDAAA,CAAuD,QAAQ,aAAa,CAAA;AAE5E,QAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAChC,MAAA;AAEA,MAAA,SAAS,gCAAA,CAAoC,QAAwC,KAAA,EAAQ;AAC3F,QAAA,MAAM,SAAS,MAAA,CAAO,oBAAA;AAItB,QAAA,MAAM,aAAa,MAAA,CAAO,yBAAA;AAE1B,QAAA,MAAM,SAAA,GAAY,2CAAA,CAA4C,UAAA,EAAY,KAAK,CAAA;AAE/E,QAAA,IAAI,MAAA,KAAW,OAAO,oBAAA,EAAsB;AAC1C,UAAA,OAAO,mBAAA,CAAoB,0BAAA,CAA2B,UAAU,CAAC,CAAA;;AAGnE,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AACrB,QAAA,IAAI,UAAU,SAAA,EAAW;AACvB,UAAA,OAAO,mBAAA,CAAoB,OAAO,YAAY,CAAA;;AAEhD,QAAA,IAAI,mCAAA,CAAoC,MAAM,CAAA,IAAK,KAAA,KAAU,QAAA,EAAU;AACrE,UAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,0DAA0D,CAAC,CAAA;;AAEtG,QAAA,IAAI,UAAU,UAAA,EAAY;AACxB,UAAA,OAAO,mBAAA,CAAoB,OAAO,YAAY,CAAA;;AAKhD,QAAA,MAAM,OAAA,GAAU,8BAA8B,MAAM,CAAA;AAEpD,QAAA,oCAAA,CAAqC,UAAA,EAAY,OAAO,SAAS,CAAA;AAEjE,QAAA,OAAO,OAAA;AACT,MAAA;AAEA,MAAA,MAAM,gBAA+B,EAAA;YASxB,+BAAA,CAA+B;QAwB1C,WAAA,GAAA;AACE,UAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;;;;;;;;;AAU3C,QAAA,IAAI,WAAA,GAAW;AACb,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMQ,uCAAqC,aAAa,CAAA;;AAE1D,UAAA,OAAO,IAAA,CAAK,YAAA;;;;;AAMd,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMA,uCAAqC,QAAQ,CAAA;;AAErD,UAAA,IAAI,IAAA,CAAK,qBAAqB,MAAA,EAAW;AAIvC,YAAA,MAAM,IAAI,UAAU,mEAAmE,CAAA;;AAEzF,UAAA,OAAO,KAAK,gBAAA,CAAiB,MAAA;;;;;;;;;AAU/B,QAAA,KAAA,CAAML,KAAS,MAAA,EAAS;AACtB,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMK,uCAAqC,OAAO,CAAA;;AAEpD,UAAA,MAAM,KAAA,GAAQ,KAAK,yBAAA,CAA0B,MAAA;AAC7C,UAAA,IAAI,UAAU,UAAA,EAAY;AAGxB,YAAA;;AAGF,UAAA,oCAAA,CAAqC,MAAML,EAAC,CAAA;;;QAI9C,CAAC,UAAU,EAAE,MAAA,EAAW;AACtB,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,MAAM,CAAA;AAC1C,UAAA,8CAAA,CAA+C,IAAI,CAAA;AACnD,UAAA,OAAO,MAAA;;;AAIT,QAAA,CAAC,UAAU,CAAA,GAAC;AACV,UAAA,UAAA,CAAW,IAAI,CAAA;;AAElB;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,gCAAgC,SAAA,EAAW;QACjE,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,KAAA,EAAO,EAAE,YAAY,IAAA;OACtB,CAAA;AACD,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,+BAAA,CAAgC,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UACnF,KAAA,EAAO,iCAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,kCAAkCH,EAAAA,EAAM;AAC/C,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,2BAA2B,CAAA,EAAG;AACzE,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,+BAAA;AACtB,MAAA;AAEA,MAAA,SAAS,oCAAA,CAAwC,QACA,UAAA,EACA,cAAA,EACA,gBACA,cAAA,EACA,cAAA,EACA,eACA,aAAA,EAA6C;AAI5F,QAAA,UAAA,CAAW,yBAAA,GAA4B,MAAA;AACvC,QAAA,MAAA,CAAO,yBAAA,GAA4B,UAAA;AAGnC,QAAA,UAAA,CAAW,MAAA,GAAS,MAAA;AACpB,QAAA,UAAA,CAAW,eAAA,GAAkB,MAAA;AAC7B,QAAA,UAAA,CAAW,UAAU,CAAA;AAErB,QAAA,UAAA,CAAW,YAAA,GAAe,MAAA;AAC1B,QAAA,UAAA,CAAW,mBAAmB,qBAAA,EAAqB;AACnD,QAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AAEtB,QAAA,UAAA,CAAW,sBAAA,GAAyB,aAAA;AACpC,QAAA,UAAA,CAAW,YAAA,GAAe,aAAA;AAE1B,QAAA,UAAA,CAAW,eAAA,GAAkB,cAAA;AAC7B,QAAA,UAAA,CAAW,eAAA,GAAkB,cAAA;AAC7B,QAAA,UAAA,CAAW,eAAA,GAAkB,cAAA;AAE7B,QAAA,MAAM,YAAA,GAAe,+CAA+C,UAAU,CAAA;AAC9E,QAAA,gCAAA,CAAiC,QAAQ,YAAY,CAAA;AAErD,QAAA,MAAM,cAAc,cAAA,EAAc;AAClC,QAAA,MAAM,YAAA,GAAe,oBAAoB,WAAW,CAAA;AACpD,QAAA,WAAA,CACE,cACA,MAAK;AAEH,UAAA,UAAA,CAAW,QAAA,GAAW,IAAA;AACtB,UAAA,mDAAA,CAAoD,UAAU,CAAA;AAC9D,UAAA,OAAO,IAAA;AAET,QAAA,CAAA,EAAA,CAAAK,EAAAA,KAAI;AAEF,UAAA,UAAA,CAAW,QAAA,GAAW,IAAA;AACtB,UAAA,+BAAA,CAAgC,QAAQA,EAAC,CAAA;AACzC,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;AAEA,MAAA,SAAS,sDAAA,CAA0D,MAAA,EACA,cAAA,EACA,aAAA,EACA,aAAA,EAA6C;AAC9G,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,+BAAA,CAAgC,SAAS,CAAA;AAE1E,QAAA,IAAI,cAAA;AACJ,QAAA,IAAI,cAAA;AACJ,QAAA,IAAI,cAAA;AACJ,QAAA,IAAI,cAAA;AAEJ,QAAA,IAAI,cAAA,CAAe,UAAU,MAAA,EAAW;AACtC,UAAA,cAAA,GAAiB,MAAM,cAAA,CAAe,KAAA,CAAO,UAAU,CAAA;AAClD,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,MAAA;;AAEzB,QAAA,IAAI,cAAA,CAAe,UAAU,MAAA,EAAW;AACtC,UAAA,cAAA,GAAiB,CAAA,KAAA,KAAS,cAAA,CAAe,KAAA,CAAO,KAAA,EAAO,UAAU,CAAA;AAC5D,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,oBAAoB,MAAS,CAAA;;AAEtD,QAAA,IAAI,cAAA,CAAe,UAAU,MAAA,EAAW;AACtC,UAAA,cAAA,GAAiB,MAAM,eAAe,KAAA,EAAM;AACvC,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,oBAAoB,MAAS,CAAA;;AAEtD,QAAA,IAAI,cAAA,CAAe,UAAU,MAAA,EAAW;AACtC,UAAA,cAAA,GAAiB,CAAA,MAAA,KAAU,cAAA,CAAe,KAAA,CAAO,MAAM,CAAA;AAClD,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,oBAAoB,MAAS,CAAA;;AAGtD,QAAA,oCAAA,CACE,QAAQ,UAAA,EAAY,cAAA,EAAgB,gBAAgB,cAAA,EAAgB,cAAA,EAAgB,eAAe,aAAa,CAAA;AAEpH,MAAA;AAGA,MAAA,SAAS,+CAA+C,UAAA,EAAgD;AACtG,QAAA,UAAA,CAAW,eAAA,GAAkB,MAAA;AAC7B,QAAA,UAAA,CAAW,eAAA,GAAkB,MAAA;AAC7B,QAAA,UAAA,CAAW,eAAA,GAAkB,MAAA;AAC7B,QAAA,UAAA,CAAW,sBAAA,GAAyB,MAAA;AACtC,MAAA;AAEA,MAAA,SAAS,qCAAwC,UAAA,EAA8C;AAC7F,QAAA,oBAAA,CAAqB,UAAA,EAAY,eAAe,CAAC,CAAA;AACjD,QAAA,mDAAA,CAAoD,UAAU,CAAA;AAChE,MAAA;AAEA,MAAA,SAAS,2CAAA,CAA+C,YACA,KAAA,EAAQ;AAC9D,QAAA,IAAI;AACF,UAAA,OAAO,UAAA,CAAW,uBAAuB,KAAK,CAAA;iBACvC,UAAA,EAAY;AACnB,UAAA,4CAAA,CAA6C,YAAY,UAAU,CAAA;AACnE,UAAA,OAAO,CAAA;;AAEX,MAAA;AAEA,MAAA,SAAS,8CAA8C,UAAA,EAAgD;AACrG,QAAA,OAAO,UAAA,CAAW,eAAe,UAAA,CAAW,eAAA;AAC9C,MAAA;AAEA,MAAA,SAAS,oCAAA,CAAwC,UAAA,EACA,KAAA,EACA,SAAA,EAAiB;AAChE,QAAA,IAAI;AACF,UAAA,oBAAA,CAAqB,UAAA,EAAY,OAAO,SAAS,CAAA;iBAC1C,QAAA,EAAU;AACjB,UAAA,4CAAA,CAA6C,YAAY,QAAQ,CAAA;AACjE,UAAA;;AAGF,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAC1B,QAAA,IAAI,CAAC,mCAAA,CAAoC,MAAM,CAAA,IAAK,MAAA,CAAO,WAAW,UAAA,EAAY;AAChF,UAAA,MAAM,YAAA,GAAe,+CAA+C,UAAU,CAAA;AAC9E,UAAA,gCAAA,CAAiC,QAAQ,YAAY,CAAA;;AAGvD,QAAA,mDAAA,CAAoD,UAAU,CAAA;AAChE,MAAA;AAIA,MAAA,SAAS,oDAAuD,UAAA,EAA8C;AAC5G,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AACxB,UAAA;;AAGF,QAAA,IAAI,MAAA,CAAO,0BAA0B,MAAA,EAAW;AAC9C,UAAA;;AAGF,QAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,QAAA,IAAI,UAAU,UAAA,EAAY;AACxB,UAAA,4BAAA,CAA6B,MAAM,CAAA;AACnC,UAAA;;AAGF,QAAA,IAAI,UAAA,CAAW,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAClC,UAAA;;AAGF,QAAA,MAAM,KAAA,GAAQ,eAAe,UAAU,CAAA;AACvC,QAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,UAAA,2CAAA,CAA4C,UAAU,CAAA;AACjD,QAAA,CAAA,MAAA;AACL,UAAA,2CAAA,CAA4C,YAAY,KAAK,CAAA;;AAEjE,MAAA;AAEA,MAAA,SAAS,4CAAA,CAA6C,YAAkD,KAAA,EAAU;AAChH,QAAA,IAAI,UAAA,CAAW,yBAAA,CAA0B,MAAA,KAAW,UAAA,EAAY;AAC9D,UAAA,oCAAA,CAAqC,YAAY,KAAK,CAAA;;AAE1D,MAAA;AAEA,MAAA,SAAS,4CAA4C,UAAA,EAAgD;AACnG,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,sCAAA,CAAuC,MAAM,CAAA;AAE7C,QAAA,YAAA,CAAa,UAAU,CAAA;AAGvB,QAAA,MAAM,gBAAA,GAAmB,WAAW,eAAA,EAAe;AACnD,QAAA,8CAAA,CAA+C,UAAU,CAAA;AACzD,QAAA,WAAA,CACE,kBACA,MAAK;AACH,UAAA,iCAAA,CAAkC,MAAM,CAAA;AACxC,UAAA,OAAO,IAAA;WAET,CAAA,MAAA,KAAS;AACP,UAAA,0CAAA,CAA2C,QAAQ,MAAM,CAAA;AACzD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;AAEA,MAAA,SAAS,2CAAA,CAA+C,YAAgD,KAAA,EAAQ;AAC9G,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,2CAAA,CAA4C,MAAM,CAAA;AAElD,QAAA,MAAM,gBAAA,GAAmB,UAAA,CAAW,eAAA,CAAgB,KAAK,CAAA;AACzD,QAAA,WAAA,CACE,kBACA,MAAK;AACH,UAAA,iCAAA,CAAkC,MAAM,CAAA;AAExC,UAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAGrB,UAAA,YAAA,CAAa,UAAU,CAAA;AAEvB,UAAA,IAAI,CAAC,mCAAA,CAAoC,MAAM,CAAA,IAAK,UAAU,UAAA,EAAY;AACxE,YAAA,MAAM,YAAA,GAAe,+CAA+C,UAAU,CAAA;AAC9E,YAAA,gCAAA,CAAiC,QAAQ,YAAY,CAAA;;AAGvD,UAAA,mDAAA,CAAoD,UAAU,CAAA;AAC9D,UAAA,OAAO,IAAA;WAET,CAAA,MAAA,KAAS;AACP,UAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,YAAA,8CAAA,CAA+C,UAAU,CAAA;;AAE3D,UAAA,0CAAA,CAA2C,QAAQ,MAAM,CAAA;AACzD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;AAEA,MAAA,SAAS,+CAA+C,UAAA,EAAgD;AACtG,QAAA,MAAM,WAAA,GAAc,8CAA8C,UAAU,CAAA;AAC5E,QAAA,OAAO,WAAA,IAAe,CAAA;AACxB,MAAA;AAIA,MAAA,SAAS,oCAAA,CAAqC,YAAkD,KAAA,EAAU;AACxG,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAI1B,QAAA,8CAAA,CAA+C,UAAU,CAAA;AACzD,QAAA,2BAAA,CAA4B,QAAQ,KAAK,CAAA;AAC3C,MAAA;AAIA,MAAA,SAASE,4BAA0B,IAAA,EAAY;AAC7C,QAAA,OAAO,IAAI,SAAA,CAAU,CAAA,yBAAA,EAA4B,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAC9F,MAAA;AAIA,MAAA,SAASC,uCAAqC,IAAA,EAAY;AACxD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,0CAAA,EAA6C,IAAI,CAAA,sDAAA,CAAwD,CAAA;AAC7G,MAAA;AAKA,MAAA,SAAS,iCAAiC,IAAA,EAAY;AACpD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,sCAAA,EAAyC,IAAI,CAAA,kDAAA,CAAoD,CAAA;AACrG,MAAA;AAEA,MAAA,SAAS,2BAA2B,IAAA,EAAY;AAC9C,QAAA,OAAO,IAAI,SAAA,CAAU,SAAA,GAAY,IAAA,GAAO,mCAAmC,CAAA;AAC7E,MAAA;AAEA,MAAA,SAAS,qCAAqC,MAAA,EAAmC;AAC/E,QAAA,MAAA,CAAO,cAAA,GAAiB,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACrD,UAAA,MAAA,CAAO,sBAAA,GAAyB,OAAA;AAChC,UAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAC/B,UAAA,MAAA,CAAO,mBAAA,GAAsB,SAAA;QAC/B,CAAC,CAAA;AACH,MAAA;AAEA,MAAA,SAAS,8CAAA,CAA+C,QAAqC,MAAA,EAAW;AACtG,QAAA,oCAAA,CAAqC,MAAM,CAAA;AAC3C,QAAA,gCAAA,CAAiC,QAAQ,MAAM,CAAA;AACjD,MAAA;AAEA,MAAA,SAAS,+CAA+C,MAAA,EAAmC;AACzF,QAAA,oCAAA,CAAqC,MAAM,CAAA;AAC3C,QAAA,iCAAA,CAAkC,MAAM,CAAA;AAC1C,MAAA;AAEA,MAAA,SAAS,gCAAA,CAAiC,QAAqC,MAAA,EAAW;AACxF,QAAA,IAAI,MAAA,CAAO,0BAA0B,MAAA,EAAW;AAC9C,UAAA;;AAIF,QAAA,yBAAA,CAA0B,OAAO,cAAc,CAAA;AAC/C,QAAA,MAAA,CAAO,sBAAsB,MAAM,CAAA;AACnC,QAAA,MAAA,CAAO,sBAAA,GAAyB,MAAA;AAChC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAC/B,QAAA,MAAA,CAAO,mBAAA,GAAsB,UAAA;AAC/B,MAAA;AAEA,MAAA,SAAS,yCAAA,CAA0C,QAAqC,MAAA,EAAW;AAKjG,QAAA,8CAAA,CAA+C,QAAQ,MAAM,CAAA;AAC/D,MAAA;AAEA,MAAA,SAAS,kCAAkC,MAAA,EAAmC;AAC5E,QAAA,IAAI,MAAA,CAAO,2BAA2B,MAAA,EAAW;AAC/C,UAAA;;AAIF,QAAA,MAAA,CAAO,uBAAuB,MAAS,CAAA;AACvC,QAAA,MAAA,CAAO,sBAAA,GAAyB,MAAA;AAChC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAC/B,QAAA,MAAA,CAAO,mBAAA,GAAsB,UAAA;AAC/B,MAAA;AAEA,MAAA,SAAS,oCAAoC,MAAA,EAAmC;AAC9E,QAAA,MAAA,CAAO,aAAA,GAAgB,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACpD,UAAA,MAAA,CAAO,qBAAA,GAAwB,OAAA;AAC/B,UAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;QAChC,CAAC,CAAA;AACD,QAAA,MAAA,CAAO,kBAAA,GAAqB,SAAA;AAC9B,MAAA;AAEA,MAAA,SAAS,6CAAA,CAA8C,QAAqC,MAAA,EAAW;AACrG,QAAA,mCAAA,CAAoC,MAAM,CAAA;AAC1C,QAAA,+BAAA,CAAgC,QAAQ,MAAM,CAAA;AAChD,MAAA;AAEA,MAAA,SAAS,8CAA8C,MAAA,EAAmC;AACxF,QAAA,mCAAA,CAAoC,MAAM,CAAA;AAC1C,QAAA,gCAAA,CAAiC,MAAM,CAAA;AACzC,MAAA;AAEA,MAAA,SAAS,+BAAA,CAAgC,QAAqC,MAAA,EAAW;AACvF,QAAA,IAAI,MAAA,CAAO,yBAAyB,MAAA,EAAW;AAC7C,UAAA;;AAGF,QAAA,yBAAA,CAA0B,OAAO,aAAa,CAAA;AAC9C,QAAA,MAAA,CAAO,qBAAqB,MAAM,CAAA;AAClC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAC/B,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAC9B,QAAA,MAAA,CAAO,kBAAA,GAAqB,UAAA;AAC9B,MAAA;AAEA,MAAA,SAAS,+BAA+B,MAAA,EAAmC;AAIzE,QAAA,mCAAA,CAAoC,MAAM,CAAA;AAC5C,MAAA;AAEA,MAAA,SAAS,wCAAA,CAAyC,QAAqC,MAAA,EAAW;AAIhG,QAAA,6CAAA,CAA8C,QAAQ,MAAM,CAAA;AAC9D,MAAA;AAEA,MAAA,SAAS,iCAAiC,MAAA,EAAmC;AAC3E,QAAA,IAAI,MAAA,CAAO,0BAA0B,MAAA,EAAW;AAC9C,UAAA;;AAGF,QAAA,MAAA,CAAO,sBAAsB,MAAS,CAAA;AACtC,QAAA,MAAA,CAAO,qBAAA,GAAwB,MAAA;AAC/B,QAAA,MAAA,CAAO,oBAAA,GAAuB,MAAA;AAC9B,QAAA,MAAA,CAAO,kBAAA,GAAqB,WAAA;AAC9B,MAAA;ACz5CA,MAAA,SAAS,UAAA,GAAU;AACjB,QAAA,IAAI,OAAO,eAAe,WAAA,EAAa;AACrC,UAAA,OAAO,UAAA;AACE,QAAA,CAAA,MAAA,IAAA,OAAO,SAAS,WAAA,EAAa;AACtC,UAAA,OAAO,IAAA;AACE,QAAA,CAAA,MAAA,IAAA,OAAO,WAAW,WAAA,EAAa;AACxC,UAAA,OAAO,MAAA;;AAET,QAAA,OAAO,MAAA;AACT,MAAA;AAEO,MAAA,MAAM,UAAU,UAAA,EAAU;ACFjC,MAAA,SAAS,0BAA0B,IAAA,EAAa;AAC9C,QAAA,IAAI,EAAE,OAAO,IAAA,KAAS,UAAA,IAAc,OAAO,SAAS,QAAA,CAAA,EAAW;AAC7D,UAAA,OAAO,KAAA;;AAET,QAAA,IAAK,IAAA,CAAiC,SAAS,cAAA,EAAgB;AAC7D,UAAA,OAAO,KAAA;;AAET,QAAA,IAAI;AACF,UAAA,IAAK,IAAA,EAAgC;AACrC,UAAA,OAAO,IAAA;iBACPP,GAAAA,EAAM;AACN,UAAA,OAAO,KAAA;;AAEX,MAAA;AAOA,MAAA,SAAS,aAAA,GAAa;AACpB,QAAA,MAAM,OAAO,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,YAAA;AACtB,QAAA,OAAO,yBAAA,CAA0B,IAAI,CAAA,GAAI,IAAA,GAAO,MAAA;AAClD,MAAA;AAMA,MAAA,SAAS,cAAA,GAAc;AAErB,QAAA,MAAM,IAAA,GAAO,SAASQ,aAAAA,CAAiC,OAAA,EAAkB,IAAA,EAAa;AACpF,UAAA,IAAA,CAAK,UAAU,OAAA,IAAW,EAAA;AAC1B,UAAA,IAAA,CAAK,OAAO,IAAA,IAAQ,OAAA;AACpB,UAAA,IAAI,MAAM,iBAAA,EAAmB;AAC3B,YAAA,KAAA,CAAM,iBAAA,CAAkB,IAAA,EAAM,IAAA,CAAK,WAAW,CAAA;;AAElD,QAAA,CAAA;AACA,QAAA,eAAA,CAAgB,MAAM,cAAc,CAAA;AACpC,QAAA,IAAA,CAAK,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA;AAC9C,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,SAAA,EAAW,aAAA,EAAe,EAAE,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,CAAA;AACxG,QAAA,OAAO,IAAA;AACT,MAAA;AAGA,MAAA,MAAMA,aAAAA,GAAwC,aAAA,EAAa,IAAM,cAAA,EAAc;AC5B/D,MAAA,SAAA,qBAAwB,MAAA,EACA,IAAA,EACA,YAAA,EACA,YAAA,EACA,eACA,MAAA,EAA+B;AAUrE,QAAA,MAAM,MAAA,GAAS,mCAAsC,MAAM,CAAA;AAC3D,QAAA,MAAM,MAAA,GAAS,mCAAsC,IAAI,CAAA;AAEzD,QAAA,MAAA,CAAO,UAAA,GAAa,IAAA;AAEpB,QAAA,IAAI,YAAA,GAAe,KAAA;AAGnB,QAAA,IAAI,YAAA,GAAe,oBAA0B,MAAS,CAAA;AAEtD,QAAA,OAAO,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACpC,UAAA,IAAI,cAAA;AACJ,UAAA,IAAI,WAAW,MAAA,EAAW;AACxB,YAAA,cAAA,GAAiB,MAAK;AACpB,cAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,KAAW,MAAA,GAAY,OAAO,MAAA,GAAS,IAAIA,aAAAA,CAAa,SAAA,EAAW,YAAY,CAAA;AACpG,cAAA,MAAM,UAAsC,EAAA;AAC5C,cAAA,IAAI,CAAC,YAAA,EAAc;AACjB,gBAAA,OAAA,CAAQ,KAAK,MAAK;AAChB,kBAAA,IAAI,IAAA,CAAK,WAAW,UAAA,EAAY;AAC9B,oBAAA,OAAO,mBAAA,CAAoB,MAAM,KAAK,CAAA;;AAExC,kBAAA,OAAO,oBAAoB,MAAS,CAAA;gBACtC,CAAC,CAAA;;AAEH,cAAA,IAAI,CAAC,aAAA,EAAe;AAClB,gBAAA,OAAA,CAAQ,KAAK,MAAK;AAChB,kBAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,oBAAA,OAAO,oBAAA,CAAqB,QAAQ,KAAK,CAAA;;AAE3C,kBAAA,OAAO,oBAAoB,MAAS,CAAA;gBACtC,CAAC,CAAA;;AAEH,cAAA,kBAAA,CAAmB,MAAM,OAAA,CAAQ,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,MAAA,KAAU,MAAA,EAAQ,CAAC,CAAA,EAAG,IAAA,EAAM,KAAK,CAAA;AACpF,YAAA,CAAA;AAEA,YAAA,IAAI,OAAO,OAAA,EAAS;AAClB,cAAA,cAAA,EAAc;AACd,cAAA;;AAGF,YAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,cAAc,CAAA;;AAMjD,UAAA,SAAS,QAAA,GAAQ;AACf,YAAA,OAAO,UAAA,CAAiB,CAAC,WAAA,EAAa,UAAA,KAAc;AAClD,cAAA,SAAS,KAAK,IAAA,EAAa;AACzB,gBAAA,IAAI,IAAA,EAAM;AACR,kBAAA,WAAA,EAAW;AACN,gBAAA,CAAA,MAAA;AAGL,kBAAA,kBAAA,CAAmB,QAAA,EAAQ,EAAI,IAAA,EAAM,UAAU,CAAA;;;AAInD,cAAA,IAAA,CAAK,KAAK,CAAA;YACZ,CAAC,CAAA;;AAGH,UAAA,SAAS,QAAA,GAAQ;AACf,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,OAAO,oBAAoB,IAAI,CAAA;;AAGjC,YAAA,OAAO,kBAAA,CAAmB,MAAA,CAAO,aAAA,EAAe,MAAK;AACnD,cAAA,OAAO,UAAA,CAAoB,CAAC,WAAA,EAAa,UAAA,KAAc;AACrD,gBAAA,+BAAA,CACE,MAAA,EACA;AACE,kBAAA,WAAA,EAAa,CAAA,KAAA,KAAQ;AACnB,oBAAA,YAAA,GAAe,mBAAmB,gCAAA,CAAiC,MAAA,EAAQ,KAAK,CAAA,EAAG,QAAWV,KAAI,CAAA;AAClG,oBAAA,WAAA,CAAY,KAAK,CAAA;;kBAEnB,WAAA,EAAa,MAAM,YAAY,IAAI,CAAA;kBACnC,WAAA,EAAa;iBACd,CAAA;cAEL,CAAC,CAAA;YACH,CAAC,CAAA;;AAIH,UAAA,kBAAA,CAAmB,MAAA,EAAQ,MAAA,CAAO,cAAA,EAAgB,CAAA,WAAA,KAAc;AAC9D,YAAA,IAAI,CAAC,YAAA,EAAc;AACjB,cAAA,kBAAA,CAAmB,MAAM,mBAAA,CAAoB,IAAA,EAAM,WAAW,CAAA,EAAG,MAAM,WAAW,CAAA;AAC7E,YAAA,CAAA,MAAA;AACL,cAAA,QAAA,CAAS,MAAM,WAAW,CAAA;;AAE5B,YAAA,OAAO,IAAA;UACT,CAAC,CAAA;AAGD,UAAA,kBAAA,CAAmB,IAAA,EAAM,MAAA,CAAO,cAAA,EAAgB,CAAA,WAAA,KAAc;AAC5D,YAAA,IAAI,CAAC,aAAA,EAAe;AAClB,cAAA,kBAAA,CAAmB,MAAM,oBAAA,CAAqB,MAAA,EAAQ,WAAW,CAAA,EAAG,MAAM,WAAW,CAAA;AAChF,YAAA,CAAA,MAAA;AACL,cAAA,QAAA,CAAS,MAAM,WAAW,CAAA;;AAE5B,YAAA,OAAO,IAAA;UACT,CAAC,CAAA;AAGD,UAAA,iBAAA,CAAkB,MAAA,EAAQ,MAAA,CAAO,cAAA,EAAgB,MAAK;AACpD,YAAA,IAAI,CAAC,YAAA,EAAc;AACjB,cAAA,kBAAA,CAAmB,MAAM,oDAAA,CAAqD,MAAM,CAAC,CAAA;AAChF,YAAA,CAAA,MAAA;AACL,cAAA,QAAA,EAAQ;;AAEV,YAAA,OAAO,IAAA;UACT,CAAC,CAAA;AAGD,UAAA,IAAI,mCAAA,CAAoC,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,QAAA,EAAU;AACzE,YAAA,MAAM,UAAA,GAAa,IAAI,SAAA,CAAU,6EAA6E,CAAA;AAE9G,YAAA,IAAI,CAAC,aAAA,EAAe;AAClB,cAAA,kBAAA,CAAmB,MAAM,oBAAA,CAAqB,MAAA,EAAQ,UAAU,CAAA,EAAG,MAAM,UAAU,CAAA;AAC9E,YAAA,CAAA,MAAA;AACL,cAAA,QAAA,CAAS,MAAM,UAAU,CAAA;;;AAI7B,UAAA,yBAAA,CAA0B,UAAU,CAAA;AAEpC,UAAA,SAAS,qBAAA,GAAqB;AAG5B,YAAA,MAAM,eAAA,GAAkB,YAAA;AACxB,YAAA,OAAO,mBACL,YAAA,EACA,MAAM,oBAAoB,YAAA,GAAe,qBAAA,KAA0B,MAAS,CAAA;;AAIhF,UAAA,SAAS,kBAAA,CAAmB,MAAA,EACA,OAAA,EACA,MAAA,EAA6B;AACvD,YAAA,IAAI,MAAA,CAAO,WAAW,SAAA,EAAW;AAC/B,cAAA,MAAA,CAAO,OAAO,YAAY,CAAA;AACrB,YAAA,CAAA,MAAA;AACL,cAAA,aAAA,CAAc,SAAS,MAAM,CAAA;;;AAIjC,UAAA,SAAS,iBAAA,CAAkB,MAAA,EAAyC,OAAA,EAAwB,MAAA,EAAkB;AAC5G,YAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,cAAA,MAAA,EAAM;AACD,YAAA,CAAA,MAAA;AACL,cAAA,eAAA,CAAgB,SAAS,MAAM,CAAA;;;AAInC,UAAA,SAAS,kBAAA,CAAmB,MAAA,EAAgC,eAAA,EAA2B,aAAA,EAAmB;AACxG,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA;;AAEF,YAAA,YAAA,GAAe,IAAA;AAEf,YAAA,IAAI,KAAK,MAAA,KAAW,UAAA,IAAc,CAAC,mCAAA,CAAoC,IAAI,CAAA,EAAG;AAC5E,cAAA,eAAA,CAAgB,qBAAA,IAAyB,SAAS,CAAA;AAC7C,YAAA,CAAA,MAAA;AACL,cAAA,SAAA,EAAS;;AAGX,YAAA,SAAS,SAAA,GAAS;AAChB,cAAA,WAAA,CACE,MAAA,EAAM,EACN,MAAM,QAAA,CAAS,eAAA,EAAiB,aAAa,CAAA,EAC7C,CAAA,QAAA,KAAY,QAAA,CAAS,IAAA,EAAM,QAAQ,CAAC,CAAA;AAEtC,cAAA,OAAO,IAAA;;;AAIX,UAAA,SAAS,QAAA,CAAS,SAAmB,KAAA,EAAW;AAC9C,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA;;AAEF,YAAA,YAAA,GAAe,IAAA;AAEf,YAAA,IAAI,KAAK,MAAA,KAAW,UAAA,IAAc,CAAC,mCAAA,CAAoC,IAAI,CAAA,EAAG;AAC5E,cAAA,eAAA,CAAgB,uBAAqB,EAAI,MAAM,QAAA,CAAS,OAAA,EAAS,KAAK,CAAC,CAAA;AAClE,YAAA,CAAA,MAAA;AACL,cAAA,QAAA,CAAS,SAAS,KAAK,CAAA;;;AAI3B,UAAA,SAAS,QAAA,CAAS,SAAmB,KAAA,EAAW;AAC9C,YAAA,kCAAA,CAAmC,MAAM,CAAA;AACzC,YAAA,kCAAA,CAAmC,MAAM,CAAA;AAEzC,YAAA,IAAI,WAAW,MAAA,EAAW;AACxB,cAAA,MAAA,CAAO,mBAAA,CAAoB,SAAS,cAAc,CAAA;;AAEpD,YAAA,IAAI,OAAA,EAAS;AACX,cAAA,MAAA,CAAO,KAAK,CAAA;AACP,YAAA,CAAA,MAAA;AACL,cAAA,OAAA,CAAQ,MAAS,CAAA;;AAGnB,YAAA,OAAO,IAAA;;QAEX,CAAC,CAAA;AACH,MAAA;YCpOa,+BAAA,CAA+B;QAwB1C,WAAA,GAAA;AACE,UAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;;;;;;AAO3C,QAAA,IAAI,WAAA,GAAW;AACb,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMS,uCAAqC,aAAa,CAAA;;AAG1D,UAAA,OAAO,8CAA8C,IAAI,CAAA;;;;;;QAO3D,KAAA,GAAK;AACH,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMA,uCAAqC,OAAO,CAAA;;AAGpD,UAAA,IAAI,CAAC,gDAAA,CAAiD,IAAI,CAAA,EAAG;AAC3D,YAAA,MAAM,IAAI,UAAU,iDAAiD,CAAA;;AAGvE,UAAA,oCAAA,CAAqC,IAAI,CAAA;;AAO3C,QAAA,OAAA,CAAQ,QAAW,MAAA,EAAU;AAC3B,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMA,uCAAqC,SAAS,CAAA;;AAGtD,UAAA,IAAI,CAAC,gDAAA,CAAiD,IAAI,CAAA,EAAG;AAC3D,YAAA,MAAM,IAAI,UAAU,mDAAmD,CAAA;;AAGzE,UAAA,OAAO,sCAAA,CAAuC,MAAM,KAAK,CAAA;;;;;AAM3D,QAAA,KAAA,CAAML,KAAS,MAAA,EAAS;AACtB,UAAA,IAAI,CAAC,iCAAA,CAAkC,IAAI,CAAA,EAAG;AAC5C,YAAA,MAAMK,uCAAqC,OAAO,CAAA;;AAGpD,UAAA,oCAAA,CAAqC,MAAML,EAAC,CAAA;;;QAI9C,CAAC,WAAW,EAAE,MAAA,EAAW;AACvB,UAAA,UAAA,CAAW,IAAI,CAAA;AACf,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,MAAM,CAAA;AAC3C,UAAA,8CAAA,CAA+C,IAAI,CAAA;AACnD,UAAA,OAAO,MAAA;;;QAIT,CAAC,SAAS,EAAE,WAAA,EAA2B;AACrC,UAAA,MAAM,SAAS,IAAA,CAAK,yBAAA;AAEpB,UAAA,IAAI,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC1B,YAAA,MAAM,KAAA,GAAQ,aAAa,IAAI,CAAA;AAE/B,YAAA,IAAI,IAAA,CAAK,eAAA,IAAmB,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,EAAG;AACpD,cAAA,8CAAA,CAA+C,IAAI,CAAA;AACnD,cAAA,mBAAA,CAAoB,MAAM,CAAA;AACrB,YAAA,CAAA,MAAA;AACL,cAAA,+CAAA,CAAgD,IAAI,CAAA;;AAGtD,YAAA,WAAA,CAAY,YAAY,KAAK,CAAA;AACxB,UAAA,CAAA,MAAA;AACL,YAAA,4BAAA,CAA6B,QAAQ,WAAW,CAAA;AAChD,YAAA,+CAAA,CAAgD,IAAI,CAAA;;;;AAKxD,QAAA,CAAC,YAAY,CAAA,GAAC;;AAGf;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,gCAAgC,SAAA,EAAW;QACjE,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,OAAA,EAAS,EAAE,YAAY,IAAA,EAAI;QAC3B,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,WAAA,EAAa,EAAE,YAAY,IAAA;OAC5B,CAAA;AACD,MAAA,eAAA,CAAgB,+BAAA,CAAgC,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACxE,MAAA,eAAA,CAAgB,+BAAA,CAAgC,SAAA,CAAU,OAAA,EAAS,SAAS,CAAA;AAC5E,MAAA,eAAA,CAAgB,+BAAA,CAAgC,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACxE,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,+BAAA,CAAgC,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UACnF,KAAA,EAAO,iCAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,kCAA2CH,EAAAA,EAAM;AACxD,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,2BAA2B,CAAA,EAAG;AACzE,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,+BAAA;AACtB,MAAA;AAEA,MAAA,SAAS,gDAAgD,UAAA,EAAgD;AACvG,QAAA,MAAM,UAAA,GAAa,8CAA8C,UAAU,CAAA;AAC3E,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA;;AAGF,QAAA,IAAI,WAAW,QAAA,EAAU;AACvB,UAAA,UAAA,CAAW,UAAA,GAAa,IAAA;AACxB,UAAA;;AAKF,QAAA,UAAA,CAAW,QAAA,GAAW,IAAA;AAEtB,QAAA,MAAM,WAAA,GAAc,WAAW,cAAA,EAAc;AAC7C,QAAA,WAAA,CACE,aACA,MAAK;AACH,UAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AAEtB,UAAA,IAAI,WAAW,UAAA,EAAY;AACzB,YAAA,UAAA,CAAW,UAAA,GAAa,KAAA;AACxB,YAAA,+CAAA,CAAgD,UAAU,CAAA;;AAG5D,UAAA,OAAO,IAAA;AAET,QAAA,CAAA,EAAA,CAAAG,EAAAA,KAAI;AACF,UAAA,oCAAA,CAAqC,YAAYA,EAAC,CAAA;AAClD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;AAEA,MAAA,SAAS,8CAA8C,UAAA,EAAgD;AACrG,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,IAAI,CAAC,gDAAA,CAAiD,UAAU,CAAA,EAAG;AACjE,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AACxB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,uBAAuB,MAAM,CAAA,IAAK,gCAAA,CAAiC,MAAM,IAAI,CAAA,EAAG;AAClF,UAAA,OAAO,IAAA;;AAGT,QAAA,MAAM,WAAA,GAAc,8CAA8C,UAAU,CAAA;AAE5E,QAAA,IAAI,cAAe,CAAA,EAAG;AACpB,UAAA,OAAO,IAAA;;AAGT,QAAA,OAAO,KAAA;AACT,MAAA;AAEA,MAAA,SAAS,+CAA+C,UAAA,EAAgD;AACtG,QAAA,UAAA,CAAW,cAAA,GAAiB,MAAA;AAC5B,QAAA,UAAA,CAAW,gBAAA,GAAmB,MAAA;AAC9B,QAAA,UAAA,CAAW,sBAAA,GAAyB,MAAA;AACtC,MAAA;AAIM,MAAA,SAAU,qCAAqC,UAAA,EAAgD;AACnG,QAAA,IAAI,CAAC,gDAAA,CAAiD,UAAU,CAAA,EAAG;AACjE,UAAA;;AAGF,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,UAAA,CAAW,eAAA,GAAkB,IAAA;AAE7B,QAAA,IAAI,UAAA,CAAW,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAClC,UAAA,8CAAA,CAA+C,UAAU,CAAA;AACzD,UAAA,mBAAA,CAAoB,MAAM,CAAA;;AAE9B,MAAA;AAEgB,MAAA,SAAA,sCAAA,CACd,YACA,KAAA,EAAQ;AAER,QAAA,IAAI,CAAC,gDAAA,CAAiD,UAAU,CAAA,EAAG;AACjE,UAAA;;AAGF,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,IAAI,uBAAuB,MAAM,CAAA,IAAK,gCAAA,CAAiC,MAAM,IAAI,CAAA,EAAG;AAClF,UAAA,gCAAA,CAAiC,MAAA,EAAQ,OAAO,KAAK,CAAA;AAChD,QAAA,CAAA,MAAA;AACL,UAAA,IAAI,SAAA;AACJ,UAAA,IAAI;AACF,YAAA,SAAA,GAAY,UAAA,CAAW,uBAAuB,KAAK,CAAA;mBAC5C,UAAA,EAAY;AACnB,YAAA,oCAAA,CAAqC,YAAY,UAAU,CAAA;AAC3D,YAAA,MAAM,UAAA;;AAGR,UAAA,IAAI;AACF,YAAA,oBAAA,CAAqB,UAAA,EAAY,OAAO,SAAS,CAAA;mBAC1C,QAAA,EAAU;AACjB,YAAA,oCAAA,CAAqC,YAAY,QAAQ,CAAA;AACzD,YAAA,MAAM,QAAA;;;AAIV,QAAA,+CAAA,CAAgD,UAAU,CAAA;AAC5D,MAAA;AAEgB,MAAA,SAAA,oCAAA,CAAqC,YAAkDA,EAAAA,EAAM;AAC3G,QAAA,MAAM,SAAS,UAAA,CAAW,yBAAA;AAE1B,QAAA,IAAI,MAAA,CAAO,WAAW,UAAA,EAAY;AAChC,UAAA;;AAGF,QAAA,UAAA,CAAW,UAAU,CAAA;AAErB,QAAA,8CAAA,CAA+C,UAAU,CAAA;AACzD,QAAA,mBAAA,CAAoB,QAAQA,EAAC,CAAA;AAC/B,MAAA;AAEM,MAAA,SAAU,8CACd,UAAA,EAAgD;AAEhD,QAAA,MAAM,KAAA,GAAQ,WAAW,yBAAA,CAA0B,MAAA;AAEnD,QAAA,IAAI,UAAU,SAAA,EAAW;AACvB,UAAA,OAAO,IAAA;;AAET,QAAA,IAAI,UAAU,QAAA,EAAU;AACtB,UAAA,OAAO,CAAA;;AAGT,QAAA,OAAO,UAAA,CAAW,eAAe,UAAA,CAAW,eAAA;AAC9C,MAAA;AAGM,MAAA,SAAU,+CACd,UAAA,EAAgD;AAEhD,QAAA,IAAI,6CAAA,CAA8C,UAAU,CAAA,EAAG;AAC7D,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;AAEM,MAAA,SAAU,iDACd,UAAA,EAAgD;AAEhD,QAAA,MAAM,KAAA,GAAQ,WAAW,yBAAA,CAA0B,MAAA;AAEnD,QAAA,IAAI,CAAC,UAAA,CAAW,eAAA,IAAmB,KAAA,KAAU,UAAA,EAAY;AACvD,UAAA,OAAO,IAAA;;AAGT,QAAA,OAAO,KAAA;AACT,MAAA;AAEgB,MAAA,SAAA,qCAAwC,MAAA,EACA,UAAA,EACA,gBACA,aAAA,EACA,eAAA,EACA,eACA,aAAA,EAA6C;AAGnG,QAAA,UAAA,CAAW,yBAAA,GAA4B,MAAA;AAEvC,QAAA,UAAA,CAAW,MAAA,GAAS,MAAA;AACpB,QAAA,UAAA,CAAW,eAAA,GAAkB,MAAA;AAC7B,QAAA,UAAA,CAAW,UAAU,CAAA;AAErB,QAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AACtB,QAAA,UAAA,CAAW,eAAA,GAAkB,KAAA;AAC7B,QAAA,UAAA,CAAW,UAAA,GAAa,KAAA;AACxB,QAAA,UAAA,CAAW,QAAA,GAAW,KAAA;AAEtB,QAAA,UAAA,CAAW,sBAAA,GAAyB,aAAA;AACpC,QAAA,UAAA,CAAW,YAAA,GAAe,aAAA;AAE1B,QAAA,UAAA,CAAW,cAAA,GAAiB,aAAA;AAC5B,QAAA,UAAA,CAAW,gBAAA,GAAmB,eAAA;AAE9B,QAAA,MAAA,CAAO,yBAAA,GAA4B,UAAA;AAEnC,QAAA,MAAM,cAAc,cAAA,EAAc;AAClC,QAAA,WAAA,CACE,mBAAA,CAAoB,WAAW,CAAA,EAC/B,MAAK;AACH,UAAA,UAAA,CAAW,QAAA,GAAW,IAAA;AAKtB,UAAA,+CAAA,CAAgD,UAAU,CAAA;AAC1D,UAAA,OAAO,IAAA;AAET,QAAA,CAAA,EAAA,CAAAE,EAAAA,KAAI;AACF,UAAA,oCAAA,CAAqC,YAAYA,EAAC,CAAA;AAClD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAEL,MAAA;AAEM,MAAA,SAAU,wDAAA,CACd,MAAA,EACA,gBAAA,EACA,aAAA,EACA,aAAA,EAA6C;AAE7C,QAAA,MAAM,UAAA,GAAiD,MAAA,CAAO,MAAA,CAAO,+BAAA,CAAgC,SAAS,CAAA;AAE9G,QAAA,IAAI,cAAA;AACJ,QAAA,IAAI,aAAA;AACJ,QAAA,IAAI,eAAA;AAEJ,QAAA,IAAI,gBAAA,CAAiB,UAAU,MAAA,EAAW;AACxC,UAAA,cAAA,GAAiB,MAAM,gBAAA,CAAiB,KAAA,CAAO,UAAU,CAAA;AACpD,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,MAAA;;AAEzB,QAAA,IAAI,gBAAA,CAAiB,SAAS,MAAA,EAAW;AACvC,UAAA,aAAA,GAAgB,MAAM,gBAAA,CAAiB,IAAA,CAAM,UAAU,CAAA;AAClD,QAAA,CAAA,MAAA;AACL,UAAA,aAAA,GAAgB,MAAM,oBAAoB,MAAS,CAAA;;AAErD,QAAA,IAAI,gBAAA,CAAiB,WAAW,MAAA,EAAW;AACzC,UAAA,eAAA,GAAkB,CAAA,MAAA,KAAU,gBAAA,CAAiB,MAAA,CAAQ,MAAM,CAAA;AACtD,QAAA,CAAA,MAAA;AACL,UAAA,eAAA,GAAkB,MAAM,oBAAoB,MAAS,CAAA;;AAGvD,QAAA,oCAAA,CACE,QAAQ,UAAA,EAAY,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,eAAe,aAAa,CAAA;AAEpG,MAAA;AAIA,MAAA,SAASG,uCAAqC,IAAA,EAAY;AACxD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,0CAAA,EAA6C,IAAI,CAAA,sDAAA,CAAwD,CAAA;AAC7G,MAAA;ACxXgB,MAAA,SAAA,iBAAA,CAAqB,QACA,eAAA,EAAwB;AAG3D,QAAA,IAAI,8BAAA,CAA+B,MAAA,CAAO,yBAAyB,CAAA,EAAG;AACpE,UAAA,OAAO,sBAAsB,MAAuC,CAAA;;AAGtE,QAAA,OAAO,yBAAyB,MAAuB,CAAA;AACzD,MAAA;AAEgB,MAAA,SAAA,wBAAA,CACd,QACA,eAAA,EAAwB;AAKxB,QAAA,MAAM,MAAA,GAAS,mCAAsC,MAAM,CAAA;AAE3D,QAAA,IAAI,OAAA,GAAU,KAAA;AACd,QAAA,IAAI,SAAA,GAAY,KAAA;AAChB,QAAA,IAAI,SAAA,GAAY,KAAA;AAChB,QAAA,IAAI,SAAA,GAAY,KAAA;AAChB,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AAEJ,QAAA,IAAI,oBAAA;AACJ,QAAA,MAAM,aAAA,GAAgB,WAAsB,CAAA,OAAA,KAAU;AACpD,UAAA,oBAAA,GAAuB,OAAA;QACzB,CAAC,CAAA;AAED,QAAA,SAAS,aAAA,GAAa;AACpB,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,SAAA,GAAY,IAAA;AACZ,YAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,UAAA,OAAA,GAAU,IAAA;AAEV,UAAA,MAAM,WAAA,GAA8B;AAClC,YAAA,WAAA,EAAa,CAAA,KAAA,KAAQ;AAInBJ,cAAAA,eAAAA,CAAe,MAAK;AAClB,gBAAA,SAAA,GAAY,KAAA;AACZ,gBAAA,MAAM,MAAA,GAAS,KAAA;AACf,gBAAA,MAAM,MAAA,GAAS,KAAA;AAQf,gBAAA,IAAI,CAAC,SAAA,EAAW;AACd,kBAAA,sCAAA,CAAuC,OAAA,CAAQ,2BAA2B,MAAM,CAAA;;AAElF,gBAAA,IAAI,CAAC,SAAA,EAAW;AACd,kBAAA,sCAAA,CAAuC,OAAA,CAAQ,2BAA2B,MAAM,CAAA;;AAGlF,gBAAA,OAAA,GAAU,KAAA;AACV,gBAAA,IAAI,SAAA,EAAW;AACb,kBAAA,aAAA,EAAa;;cAEjB,CAAC,CAAA;;AAEH,YAAA,WAAA,EAAa,MAAK;AAChB,cAAA,OAAA,GAAU,KAAA;AACV,cAAA,IAAI,CAAC,SAAA,EAAW;AACd,gBAAA,oCAAA,CAAqC,QAAQ,yBAAyB,CAAA;;AAExE,cAAA,IAAI,CAAC,SAAA,EAAW;AACd,gBAAA,oCAAA,CAAqC,QAAQ,yBAAyB,CAAA;;AAGxE,cAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,EAAW;AAC5B,gBAAA,oBAAA,CAAqB,MAAS,CAAA;;;AAGlC,YAAA,WAAA,EAAa,MAAK;AAChB,cAAA,OAAA,GAAU,KAAA;;;AAGd,UAAA,+BAAA,CAAgC,QAAQ,WAAW,CAAA;AAEnD,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,QAAA,SAAS,iBAAiB,MAAA,EAAW;AACnC,UAAA,SAAA,GAAY,IAAA;AACZ,UAAA,OAAA,GAAU,MAAA;AACV,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,MAAM,eAAA,GAAkB,mBAAA,CAAoB,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAC9D,YAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,MAAA,EAAQ,eAAe,CAAA;AACjE,YAAA,oBAAA,CAAqB,YAAY,CAAA;;AAEnC,UAAA,OAAO,aAAA;;AAGT,QAAA,SAAS,iBAAiB,MAAA,EAAW;AACnC,UAAA,SAAA,GAAY,IAAA;AACZ,UAAA,OAAA,GAAU,MAAA;AACV,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,MAAM,eAAA,GAAkB,mBAAA,CAAoB,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAC9D,YAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,MAAA,EAAQ,eAAe,CAAA;AACjE,YAAA,oBAAA,CAAqB,YAAY,CAAA;;AAEnC,UAAA,OAAO,aAAA;;AAGT,QAAA,SAAS,cAAA,GAAc;;AAIvB,QAAA,OAAA,GAAU,oBAAA,CAAqB,cAAA,EAAgB,aAAA,EAAe,gBAAgB,CAAA;AAC9E,QAAA,OAAA,GAAU,oBAAA,CAAqB,cAAA,EAAgB,aAAA,EAAe,gBAAgB,CAAA;AAE9E,QAAA,aAAA,CAAc,MAAA,CAAO,cAAA,EAAgB,CAACC,EAAAA,KAAU;AAC9C,UAAA,oCAAA,CAAqC,OAAA,CAAQ,2BAA2BA,EAAC,CAAA;AACzE,UAAA,oCAAA,CAAqC,OAAA,CAAQ,2BAA2BA,EAAC,CAAA;AACzE,UAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,EAAW;AAC5B,YAAA,oBAAA,CAAqB,MAAS,CAAA;;AAEhC,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAED,QAAA,OAAO,CAAC,SAAS,OAAO,CAAA;AAC1B,MAAA;AAEM,MAAA,SAAU,sBAAsB,MAAA,EAA0B;AAI9D,QAAA,IAAI,MAAA,GAAsD,mCAAmC,MAAM,CAAA;AACnG,QAAA,IAAI,OAAA,GAAU,KAAA;AACd,QAAA,IAAI,mBAAA,GAAsB,KAAA;AAC1B,QAAA,IAAI,mBAAA,GAAsB,KAAA;AAC1B,QAAA,IAAI,SAAA,GAAY,KAAA;AAChB,QAAA,IAAI,SAAA,GAAY,KAAA;AAChB,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AAEJ,QAAA,IAAI,oBAAA;AACJ,QAAA,MAAM,aAAA,GAAgB,WAAiB,CAAA,OAAA,KAAU;AAC/C,UAAA,oBAAA,GAAuB,OAAA;QACzB,CAAC,CAAA;AAED,QAAA,SAAS,mBAAmB,UAAA,EAAuD;AACjF,UAAA,aAAA,CAAc,UAAA,CAAW,cAAA,EAAgB,CAAAA,EAAAA,KAAI;AAC3C,YAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,cAAA,OAAO,IAAA;;AAET,YAAA,iCAAA,CAAkC,OAAA,CAAQ,2BAA2BA,EAAC,CAAA;AACtE,YAAA,iCAAA,CAAkC,OAAA,CAAQ,2BAA2BA,EAAC,CAAA;AACtE,YAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,EAAW;AAC5B,cAAA,oBAAA,CAAqB,MAAS,CAAA;;AAEhC,YAAA,OAAO,IAAA;UACT,CAAC,CAAA;;AAGH,QAAA,SAAS,qBAAA,GAAqB;AAC5B,UAAA,IAAI,0BAAA,CAA2B,MAAM,CAAA,EAAG;AAEtC,YAAA,kCAAA,CAAmC,MAAM,CAAA;AAEzC,YAAA,MAAA,GAAS,mCAAmC,MAAM,CAAA;AAClD,YAAA,kBAAA,CAAmB,MAAM,CAAA;;AAG3B,UAAA,MAAM,WAAA,GAAkD;AACtD,YAAA,WAAA,EAAa,CAAA,KAAA,KAAQ;AAInBD,cAAAA,eAAAA,CAAe,MAAK;AAClB,gBAAA,mBAAA,GAAsB,KAAA;AACtB,gBAAA,mBAAA,GAAsB,KAAA;AAEtB,gBAAA,MAAM,MAAA,GAAS,KAAA;AACf,gBAAA,IAAI,MAAA,GAAS,KAAA;AACb,gBAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,EAAW;AAC5B,kBAAA,IAAI;AACF,oBAAA,MAAA,GAAS,kBAAkB,KAAK,CAAA;2BACzB,MAAA,EAAQ;AACf,oBAAA,iCAAA,CAAkC,OAAA,CAAQ,2BAA2B,MAAM,CAAA;AAC3E,oBAAA,iCAAA,CAAkC,OAAA,CAAQ,2BAA2B,MAAM,CAAA;AAC3E,oBAAA,oBAAA,CAAqB,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAC,CAAA;AACzD,oBAAA;;;AAIJ,gBAAA,IAAI,CAAC,SAAA,EAAW;AACd,kBAAA,mCAAA,CAAoC,OAAA,CAAQ,2BAA2B,MAAM,CAAA;;AAE/E,gBAAA,IAAI,CAAC,SAAA,EAAW;AACd,kBAAA,mCAAA,CAAoC,OAAA,CAAQ,2BAA2B,MAAM,CAAA;;AAG/E,gBAAA,OAAA,GAAU,KAAA;AACV,gBAAA,IAAI,mBAAA,EAAqB;AACvB,kBAAA,cAAA,EAAc;2BACL,mBAAA,EAAqB;AAC9B,kBAAA,cAAA,EAAc;;cAElB,CAAC,CAAA;;AAEH,YAAA,WAAA,EAAa,MAAK;AAChB,cAAA,OAAA,GAAU,KAAA;AACV,cAAA,IAAI,CAAC,SAAA,EAAW;AACd,gBAAA,iCAAA,CAAkC,QAAQ,yBAAyB,CAAA;;AAErE,cAAA,IAAI,CAAC,SAAA,EAAW;AACd,gBAAA,iCAAA,CAAkC,QAAQ,yBAAyB,CAAA;;AAErE,cAAA,IAAI,OAAA,CAAQ,yBAAA,CAA0B,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAClE,gBAAA,mCAAA,CAAoC,OAAA,CAAQ,2BAA2B,CAAC,CAAA;;AAE1E,cAAA,IAAI,OAAA,CAAQ,yBAAA,CAA0B,iBAAA,CAAkB,MAAA,GAAS,CAAA,EAAG;AAClE,gBAAA,mCAAA,CAAoC,OAAA,CAAQ,2BAA2B,CAAC,CAAA;;AAE1E,cAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,EAAW;AAC5B,gBAAA,oBAAA,CAAqB,MAAS,CAAA;;;AAGlC,YAAA,WAAA,EAAa,MAAK;AAChB,cAAA,OAAA,GAAU,KAAA;;;AAGd,UAAA,+BAAA,CAAgC,QAAQ,WAAW,CAAA;;AAGrD,QAAA,SAAS,kBAAA,CAAmB,MAAkC,UAAA,EAAmB;AAC/E,UAAA,IAAI,6BAAA,CAAqD,MAAM,CAAA,EAAG;AAEhE,YAAA,kCAAA,CAAmC,MAAM,CAAA;AAEzC,YAAA,MAAA,GAAS,gCAAgC,MAAM,CAAA;AAC/C,YAAA,kBAAA,CAAmB,MAAM,CAAA;;AAG3B,UAAA,MAAM,UAAA,GAAa,aAAa,OAAA,GAAU,OAAA;AAC1C,UAAA,MAAM,WAAA,GAAc,aAAa,OAAA,GAAU,OAAA;AAE3C,UAAA,MAAM,eAAA,GAA+D;AACnE,YAAA,WAAA,EAAa,CAAA,KAAA,KAAQ;AAInBA,cAAAA,eAAAA,CAAe,MAAK;AAClB,gBAAA,mBAAA,GAAsB,KAAA;AACtB,gBAAA,mBAAA,GAAsB,KAAA;AAEtB,gBAAA,MAAM,YAAA,GAAe,aAAa,SAAA,GAAY,SAAA;AAC9C,gBAAA,MAAM,aAAA,GAAgB,aAAa,SAAA,GAAY,SAAA;AAE/C,gBAAA,IAAI,CAAC,aAAA,EAAe;AAClB,kBAAA,IAAI,WAAA;AACJ,kBAAA,IAAI;AACF,oBAAA,WAAA,GAAc,kBAAkB,KAAK,CAAA;2BAC9B,MAAA,EAAQ;AACf,oBAAA,iCAAA,CAAkC,UAAA,CAAW,2BAA2B,MAAM,CAAA;AAC9E,oBAAA,iCAAA,CAAkC,WAAA,CAAY,2BAA2B,MAAM,CAAA;AAC/E,oBAAA,oBAAA,CAAqB,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAC,CAAA;AACzD,oBAAA;;AAEF,kBAAA,IAAI,CAAC,YAAA,EAAc;AACjB,oBAAA,8CAAA,CAA+C,UAAA,CAAW,2BAA2B,KAAK,CAAA;;AAE5F,kBAAA,mCAAA,CAAoC,WAAA,CAAY,2BAA2B,WAAW,CAAA;AAC7E,gBAAA,CAAA,MAAA,IAAA,CAAC,YAAA,EAAc;AACxB,kBAAA,8CAAA,CAA+C,UAAA,CAAW,2BAA2B,KAAK,CAAA;;AAG5F,gBAAA,OAAA,GAAU,KAAA;AACV,gBAAA,IAAI,mBAAA,EAAqB;AACvB,kBAAA,cAAA,EAAc;2BACL,mBAAA,EAAqB;AAC9B,kBAAA,cAAA,EAAc;;cAElB,CAAC,CAAA;;AAEH,YAAA,WAAA,EAAa,CAAA,KAAA,KAAQ;AACnB,cAAA,OAAA,GAAU,KAAA;AAEV,cAAA,MAAM,YAAA,GAAe,aAAa,SAAA,GAAY,SAAA;AAC9C,cAAA,MAAM,aAAA,GAAgB,aAAa,SAAA,GAAY,SAAA;AAE/C,cAAA,IAAI,CAAC,YAAA,EAAc;AACjB,gBAAA,iCAAA,CAAkC,WAAW,yBAAyB,CAAA;;AAExE,cAAA,IAAI,CAAC,aAAA,EAAe;AAClB,gBAAA,iCAAA,CAAkC,YAAY,yBAAyB,CAAA;;AAGzE,cAAA,IAAI,UAAU,MAAA,EAAW;AAGvB,gBAAA,IAAI,CAAC,YAAA,EAAc;AACjB,kBAAA,8CAAA,CAA+C,UAAA,CAAW,2BAA2B,KAAK,CAAA;;AAE5F,gBAAA,IAAI,CAAC,aAAA,IAAiB,WAAA,CAAY,yBAAA,CAA0B,iBAAA,CAAkB,SAAS,CAAA,EAAG;AACxF,kBAAA,mCAAA,CAAoC,WAAA,CAAY,2BAA2B,CAAC,CAAA;;;AAIhF,cAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,aAAA,EAAe;AACnC,gBAAA,oBAAA,CAAqB,MAAS,CAAA;;;AAGlC,YAAA,WAAA,EAAa,MAAK;AAChB,cAAA,OAAA,GAAU,KAAA;;;AAGd,UAAA,4BAAA,CAA6B,MAAA,EAAQ,IAAA,EAAM,CAAA,EAAG,eAAe,CAAA;;AAG/D,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,mBAAA,GAAsB,IAAA;AACtB,YAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,UAAA,OAAA,GAAU,IAAA;AAEV,UAAA,MAAM,WAAA,GAAc,0CAAA,CAA2C,OAAA,CAAQ,yBAAyB,CAAA;AAChG,UAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,YAAA,qBAAA,EAAqB;AAChB,UAAA,CAAA,MAAA;AACL,YAAA,kBAAA,CAAmB,WAAA,CAAY,OAAQ,KAAK,CAAA;;AAG9C,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,mBAAA,GAAsB,IAAA;AACtB,YAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,UAAA,OAAA,GAAU,IAAA;AAEV,UAAA,MAAM,WAAA,GAAc,0CAAA,CAA2C,OAAA,CAAQ,yBAAyB,CAAA;AAChG,UAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,YAAA,qBAAA,EAAqB;AAChB,UAAA,CAAA,MAAA;AACL,YAAA,kBAAA,CAAmB,WAAA,CAAY,OAAQ,IAAI,CAAA;;AAG7C,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAGtC,QAAA,SAAS,iBAAiB,MAAA,EAAW;AACnC,UAAA,SAAA,GAAY,IAAA;AACZ,UAAA,OAAA,GAAU,MAAA;AACV,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,MAAM,eAAA,GAAkB,mBAAA,CAAoB,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAC9D,YAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,MAAA,EAAQ,eAAe,CAAA;AACjE,YAAA,oBAAA,CAAqB,YAAY,CAAA;;AAEnC,UAAA,OAAO,aAAA;;AAGT,QAAA,SAAS,iBAAiB,MAAA,EAAW;AACnC,UAAA,SAAA,GAAY,IAAA;AACZ,UAAA,OAAA,GAAU,MAAA;AACV,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,MAAM,eAAA,GAAkB,mBAAA,CAAoB,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAC9D,YAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,MAAA,EAAQ,eAAe,CAAA;AACjE,YAAA,oBAAA,CAAqB,YAAY,CAAA;;AAEnC,UAAA,OAAO,aAAA;;AAGT,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA;;AAGF,QAAA,OAAA,GAAU,wBAAA,CAAyB,cAAA,EAAgB,cAAA,EAAgB,gBAAgB,CAAA;AACnF,QAAA,OAAA,GAAU,wBAAA,CAAyB,cAAA,EAAgB,cAAA,EAAgB,gBAAgB,CAAA;AAEnF,QAAA,kBAAA,CAAmB,MAAM,CAAA;AAEzB,QAAA,OAAO,CAAC,SAAS,OAAO,CAAA;AAC1B,MAAA;ACtZM,MAAA,SAAU,qBAAwB,MAAA,EAAe;AACrD,QAAA,OAAO,YAAA,CAAa,MAAM,CAAA,IAAK,OAAQ,OAAiC,SAAA,KAAc,WAAA;AACxF,MAAA;ACnBM,MAAA,SAAU,mBACd,MAAA,EAA8D;AAE9D,QAAA,IAAI,oBAAA,CAAqB,MAAM,CAAA,EAAG;AAChC,UAAA,OAAO,+BAAA,CAAgC,MAAA,CAAO,SAAA,EAAW,CAAA;;AAE3D,QAAA,OAAO,2BAA2B,MAAM,CAAA;AAC1C,MAAA;AAEM,MAAA,SAAU,2BAA8B,aAAA,EAA6C;AACzF,QAAA,IAAI,MAAA;AACJ,QAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,aAAA,EAAe,OAAO,CAAA;AAEzD,QAAA,MAAM,cAAA,GAAiBL,KAAAA;AAEvB,QAAA,SAAS,aAAA,GAAa;AACpB,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI;AACF,YAAA,UAAA,GAAa,aAAa,cAAc,CAAA;mBACjCI,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;AAE9B,UAAA,MAAM,WAAA,GAAc,oBAAoB,UAAU,CAAA;AAClD,UAAA,OAAO,oBAAA,CAAqB,aAAa,CAAA,UAAA,KAAa;AACpD,YAAA,IAAI,CAAC,YAAA,CAAa,UAAU,CAAA,EAAG;AAC7B,cAAA,MAAM,IAAI,UAAU,gFAAgF,CAAA;;AAEtG,YAAA,MAAM,IAAA,GAAO,iBAAiB,UAAU,CAAA;AACxC,YAAA,IAAI,IAAA,EAAM;AACR,cAAA,oCAAA,CAAqC,OAAO,yBAAyB,CAAA;AAChE,YAAA,CAAA,MAAA;AACL,cAAA,MAAM,KAAA,GAAQ,cAAc,UAAU,CAAA;AACtC,cAAA,sCAAA,CAAuC,MAAA,CAAO,2BAA2B,KAAK,CAAA;;UAElF,CAAC,CAAA;;AAGH,QAAA,SAAS,gBAAgB,MAAA,EAAW;AAClC,UAAA,MAAM,WAAW,cAAA,CAAe,QAAA;AAChC,UAAA,IAAI,YAAA;AACJ,UAAA,IAAI;AACF,YAAA,YAAA,GAAe,SAAA,CAAU,UAAU,QAAQ,CAAA;mBACpCA,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;AAE9B,UAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,YAAA,OAAO,oBAAoB,MAAS,CAAA;;AAEtC,UAAA,IAAI,YAAA;AACJ,UAAA,IAAI;AACF,YAAA,YAAA,GAAe,WAAA,CAAY,YAAA,EAAc,QAAA,EAAU,CAAC,MAAM,CAAC,CAAA;mBACpDA,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;AAE9B,UAAA,MAAM,aAAA,GAAgB,oBAAoB,YAAY,CAAA;AACtD,UAAA,OAAO,oBAAA,CAAqB,eAAe,CAAA,UAAA,KAAa;AACtD,YAAA,IAAI,CAAC,YAAA,CAAa,UAAU,CAAA,EAAG;AAC7B,cAAA,MAAM,IAAI,UAAU,kFAAkF,CAAA;;AAExG,YAAA,OAAO,MAAA;UACT,CAAC,CAAA;;AAGH,QAAA,MAAA,GAAS,oBAAA,CAAqB,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,CAAC,CAAA;AAC/E,QAAA,OAAO,MAAA;AACT,MAAA;AAEM,MAAA,SAAU,gCACd,MAAA,EAA0C;AAE1C,QAAA,IAAI,MAAA;AAEJ,QAAA,MAAM,cAAA,GAAiBJ,KAAAA;AAEvB,QAAA,SAAS,aAAA,GAAa;AACpB,UAAA,IAAI,WAAA;AACJ,UAAA,IAAI;AACF,YAAA,WAAA,GAAc,OAAO,IAAA,EAAI;mBAClBI,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;AAE9B,UAAA,OAAO,oBAAA,CAAqB,aAAa,CAAA,UAAA,KAAa;AACpD,YAAA,IAAI,CAAC,YAAA,CAAa,UAAU,CAAA,EAAG;AAC7B,cAAA,MAAM,IAAI,UAAU,8EAA8E,CAAA;;AAEpG,YAAA,IAAI,WAAW,IAAA,EAAM;AACnB,cAAA,oCAAA,CAAqC,OAAO,yBAAyB,CAAA;AAChE,YAAA,CAAA,MAAA;AACL,cAAA,MAAM,QAAQ,UAAA,CAAW,KAAA;AACzB,cAAA,sCAAA,CAAuC,MAAA,CAAO,2BAA2B,KAAK,CAAA;;UAElF,CAAC,CAAA;;AAGH,QAAA,SAAS,gBAAgB,MAAA,EAAW;AAClC,UAAA,IAAI;AACF,YAAA,OAAO,mBAAA,CAAoB,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA;mBACzCA,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;;AAIhC,QAAA,MAAA,GAAS,oBAAA,CAAqB,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,CAAC,CAAA;AAC/E,QAAA,OAAO,MAAA;AACT,MAAA;ACvGgB,MAAA,SAAA,oCAAA,CACd,QACA,OAAA,EAAe;AAEf,QAAA,gBAAA,CAAiB,QAAQ,OAAO,CAAA;AAChC,QAAA,MAAM,QAAA,GAAW,MAAA;AACjB,QAAA,MAAM,wBAAwB,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,qBAAA;AACxC,QAAA,MAAM,SAAS,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,MAAA;AACzB,QAAA,MAAM,OAAO,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,IAAA;AACvB,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,MAAM,OAAO,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,IAAA;AACvB,QAAA,OAAO;AACL,UAAA,qBAAA,EAAuB,0BAA0B,MAAA,GAC/C,MAAA,GACA,wCACE,qBAAA,EACA,CAAA,EAAG,OAAO,CAAA,wCAAA,CAA0C,CAAA;UAExD,MAAA,EAAQ,MAAA,KAAW,SACjB,MAAA,GACA,qCAAA,CAAsC,QAAQ,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,yBAAA,CAA2B,CAAA;UAChG,IAAA,EAAM,IAAA,KAAS,SACb,MAAA,GACA,mCAAA,CAAoC,MAAM,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,uBAAA,CAAyB,CAAA;UAC1F,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,oCAAA,CAAqC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;AAC7F,UAAA,IAAA,EAAM,SAAS,MAAA,GAAY,MAAA,GAAY,0BAA0B,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,uBAAA,CAAyB;;AAE9G,MAAA;AAEA,MAAA,SAAS,qCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,MAAA,KAAgB,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,MAAM,CAAC,CAAA;AAC5D,MAAA;AAEA,MAAA,SAAS,mCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAA,KAA4C,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,UAAU,CAAC,CAAA;AAC5F,MAAA;AAEA,MAAA,SAAS,oCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAA,KAA4C,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,UAAU,CAAC,CAAA;AAC5F,MAAA;AAEA,MAAA,SAAS,yBAAA,CAA0B,MAAc,OAAA,EAAe;AAC9D,QAAA,IAAA,GAAO,GAAG,IAAI,CAAA,CAAA;AACd,QAAA,IAAI,SAAS,OAAA,EAAS;AACpB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,yDAAA,CAA2D,CAAA;;AAEpG,QAAA,OAAO,IAAA;AACT,MAAA;ACvEgB,MAAA,SAAA,sBAAA,CAAuB,SACA,OAAA,EAAe;AACpD,QAAA,gBAAA,CAAiB,SAAS,OAAO,CAAA;AACjC,QAAA,MAAM,gBAAgB,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,aAAA;AAC/B,QAAA,OAAO,EAAE,aAAA,EAAe,OAAA,CAAQ,aAAa,CAAA,EAAC;AAChD,MAAA;ACPgB,MAAA,SAAA,kBAAA,CAAmB,SACA,OAAA,EAAe;AAChD,QAAA,gBAAA,CAAiB,SAAS,OAAO,CAAA;AACjC,QAAA,MAAM,eAAe,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,YAAA;AAC9B,QAAA,MAAM,gBAAgB,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,aAAA;AAC/B,QAAA,MAAM,eAAe,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,YAAA;AAC9B,QAAA,MAAM,SAAS,OAAA,KAAO,IAAA,IAAP,OAAA,KAAA,MAAA,GAAA,SAAA,OAAA,CAAS,MAAA;AACxB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,iBAAA,CAAkB,MAAA,EAAQ,CAAA,EAAG,OAAO,CAAA,yBAAA,CAA2B,CAAA;;AAEjE,QAAA,OAAO;AACL,UAAA,YAAA,EAAc,QAAQ,YAAY,CAAA;AAClC,UAAA,aAAA,EAAe,QAAQ,aAAa,CAAA;AACpC,UAAA,YAAA,EAAc,QAAQ,YAAY,CAAA;AAClC,UAAA;;AAEJ,MAAA;AAEA,MAAA,SAAS,iBAAA,CAAkB,QAAiB,OAAA,EAAe;AACzD,QAAA,IAAI,CAACG,cAAAA,CAAc,MAAM,CAAA,EAAG;AAC1B,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA,uBAAA,CAAyB,CAAA;;AAE3D,MAAA;ACpBgB,MAAA,SAAA,2BAAA,CACd,MACA,OAAA,EAAe;AAEf,QAAA,gBAAA,CAAiB,MAAM,OAAO,CAAA;AAE9B,QAAA,MAAM,WAAW,IAAA,KAAI,IAAA,IAAJ,IAAA,KAAA,MAAA,GAAA,SAAA,IAAA,CAAM,QAAA;AACvB,QAAA,mBAAA,CAAoB,QAAA,EAAU,YAAY,sBAAsB,CAAA;AAChE,QAAA,oBAAA,CAAqB,QAAA,EAAU,CAAA,EAAG,OAAO,CAAA,2BAAA,CAA6B,CAAA;AAEtE,QAAA,MAAM,WAAW,IAAA,KAAI,IAAA,IAAJ,IAAA,KAAA,MAAA,GAAA,SAAA,IAAA,CAAM,QAAA;AACvB,QAAA,mBAAA,CAAoB,QAAA,EAAU,YAAY,sBAAsB,CAAA;AAChE,QAAA,oBAAA,CAAqB,QAAA,EAAU,CAAA,EAAG,OAAO,CAAA,2BAAA,CAA6B,CAAA;AAEtE,QAAA,OAAO,EAAE,UAAU,QAAA,EAAQ;AAC7B,MAAA;YCkEaI,eAAAA,CAAc;AAczB,QAAA,WAAA,CAAY,mBAAA,GAAqF,EAAA,EACrF,WAAA,GAAqD,EAAA,EAAE;AACjE,UAAA,IAAI,wBAAwB,MAAA,EAAW;AACrC,YAAA,mBAAA,GAAsB,IAAA;AACjB,UAAA,CAAA,MAAA;AACL,YAAA,YAAA,CAAa,qBAAqB,iBAAiB,CAAA;;AAGrD,UAAA,MAAM,QAAA,GAAW,sBAAA,CAAuB,WAAA,EAAa,kBAAkB,CAAA;AACvE,UAAA,MAAM,gBAAA,GAAmB,oCAAA,CAAqC,mBAAA,EAAqB,iBAAiB,CAAA;AAEpG,UAAA,wBAAA,CAAyB,IAAI,CAAA;AAE7B,UAAA,IAAI,gBAAA,CAAiB,SAAS,OAAA,EAAS;AACrC,YAAA,IAAI,QAAA,CAAS,SAAS,MAAA,EAAW;AAC/B,cAAA,MAAM,IAAI,WAAW,4DAA4D,CAAA;;AAEnF,YAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,QAAA,EAAU,CAAC,CAAA;AACtD,YAAA,qDAAA,CACE,IAAA,EACA,kBACA,aAAa,CAAA;AAEV,UAAA,CAAA,MAAA;AAEL,YAAA,MAAM,aAAA,GAAgB,qBAAqB,QAAQ,CAAA;AACnD,YAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,QAAA,EAAU,CAAC,CAAA;AACtD,YAAA,wDAAA,CACE,IAAA,EACA,gBAAA,EACA,aAAA,EACA,aAAa,CAAA;;;;;;AAQnB,QAAA,IAAI,MAAA,GAAM;AACR,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMH,4BAA0B,QAAQ,CAAA;;AAG1C,UAAA,OAAO,uBAAuB,IAAI,CAAA;;;;;;;;AASpC,QAAA,MAAA,CAAO,SAAc,MAAA,EAAS;AAC5B,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,OAAO,mBAAA,CAAoBA,2BAAAA,CAA0B,QAAQ,CAAC,CAAA;;AAGhE,UAAA,IAAI,sBAAA,CAAuB,IAAI,CAAA,EAAG;AAChC,YAAA,OAAO,mBAAA,CAAoB,IAAI,SAAA,CAAU,kDAAkD,CAAC,CAAA;;AAG9F,UAAA,OAAO,oBAAA,CAAqB,MAAM,MAAM,CAAA;;AAsB1C,QAAA,SAAA,CACE,aAAgE,MAAA,EAAS;AAEzE,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMA,4BAA0B,WAAW,CAAA;;AAG7C,UAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,UAAA,EAAY,iBAAiB,CAAA;AAElE,UAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAW;AAC9B,YAAA,OAAO,mCAAmC,IAAI,CAAA;;AAIhD,UAAA,OAAO,gCAAgC,IAAqC,CAAA;;QAc9E,WAAA,CACE,YAAA,EACA,UAAA,GAAmD,EAAA,EAAE;AAErD,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMA,4BAA0B,aAAa,CAAA;;AAE/C,UAAA,sBAAA,CAAuB,YAAA,EAAc,GAAG,aAAa,CAAA;AAErD,UAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,YAAA,EAAc,iBAAiB,CAAA;AAC7E,UAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,UAAA,EAAY,kBAAkB,CAAA;AAEjE,UAAA,IAAI,sBAAA,CAAuB,IAAI,CAAA,EAAG;AAChC,YAAA,MAAM,IAAI,UAAU,gFAAgF,CAAA;;AAEtG,UAAA,IAAI,sBAAA,CAAuB,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9C,YAAA,MAAM,IAAI,UAAU,gFAAgF,CAAA;;AAGtG,UAAA,MAAM,OAAA,GAAU,oBAAA,CACd,IAAA,EAAM,SAAA,CAAU,QAAA,EAAU,OAAA,CAAQ,YAAA,EAAc,OAAA,CAAQ,YAAA,EAAc,OAAA,CAAQ,aAAA,EAAe,OAAA,CAAQ,MAAM,CAAA;AAG7G,UAAA,yBAAA,CAA0B,OAAO,CAAA;AAEjC,UAAA,OAAO,SAAA,CAAU,QAAA;;QAWnB,MAAA,CAAO,WAAA,EACA,UAAA,GAAmD,EAAA,EAAE;AAC1D,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,OAAO,mBAAA,CAAoBA,2BAAAA,CAA0B,QAAQ,CAAC,CAAA;;AAGhE,UAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,YAAA,OAAO,oBAAoB,CAAA,oCAAA,CAAsC,CAAA;;AAEnE,UAAA,IAAI,CAAC,gBAAA,CAAiB,WAAW,CAAA,EAAG;AAClC,YAAA,OAAO,mBAAA,CACL,IAAI,SAAA,CAAU,CAAA,yEAAA,CAA2E,CAAC,CAAA;;AAI9F,UAAA,IAAI,OAAA;AACJ,UAAA,IAAI;AACF,YAAA,OAAA,GAAU,kBAAA,CAAmB,YAAY,kBAAkB,CAAA;mBACpDJ,EAAAA,EAAG;AACV,YAAA,OAAO,oBAAoBA,EAAC,CAAA;;AAG9B,UAAA,IAAI,sBAAA,CAAuB,IAAI,CAAA,EAAG;AAChC,YAAA,OAAO,mBAAA,CACL,IAAI,SAAA,CAAU,2EAA2E,CAAC,CAAA;;AAG9F,UAAA,IAAI,sBAAA,CAAuB,WAAW,CAAA,EAAG;AACvC,YAAA,OAAO,mBAAA,CACL,IAAI,SAAA,CAAU,2EAA2E,CAAC,CAAA;;AAI9F,UAAA,OAAO,oBAAA,CACL,IAAA,EAAM,WAAA,EAAa,OAAA,CAAQ,YAAA,EAAc,QAAQ,YAAA,EAAc,OAAA,CAAQ,aAAA,EAAe,OAAA,CAAQ,MAAM,CAAA;;;;;;;;;;;;;QAexG,GAAA,GAAG;AACD,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMI,4BAA0B,KAAK,CAAA;;AAGvC,UAAA,MAAM,QAAA,GAAW,kBAAkB,IAAW,CAAA;AAC9C,UAAA,OAAO,oBAAoB,QAAQ,CAAA;;AAerC,QAAA,MAAA,CAAO,aAA+D,MAAA,EAAS;AAC7E,UAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,YAAA,MAAMA,4BAA0B,QAAQ,CAAA;;AAG1C,UAAA,MAAM,OAAA,GAAU,sBAAA,CAAuB,UAAA,EAAY,iBAAiB,CAAA;AACpE,UAAA,OAAO,kCAAA,CAAsC,IAAA,EAAM,OAAA,CAAQ,aAAa,CAAA;;QAQ1E,CAAC,mBAAmB,EAAE,OAAA,EAAuC;AAE3D,UAAA,OAAO,IAAA,CAAK,OAAO,OAAO,CAAA;;;;;;;;AAS5B,QAAA,OAAO,KAAQ,aAAA,EAAqE;AAClF,UAAA,OAAO,mBAAmB,aAAa,CAAA;;AAE1C;AAED,MAAA,MAAA,CAAO,iBAAiBG,eAAAA,EAAgB;QACtC,IAAA,EAAM,EAAE,YAAY,IAAA;OACrB,CAAA;AACD,MAAA,MAAA,CAAO,gBAAA,CAAiBA,gBAAe,SAAA,EAAW;QAChD,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,SAAA,EAAW,EAAE,YAAY,IAAA,EAAI;QAC7B,WAAA,EAAa,EAAE,YAAY,IAAA,EAAI;QAC/B,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,GAAA,EAAK,EAAE,YAAY,IAAA,EAAI;QACvB,MAAA,EAAQ,EAAE,YAAY,IAAA,EAAI;QAC1B,MAAA,EAAQ,EAAE,YAAY,IAAA;OACvB,CAAA;AACD,MAAA,eAAA,CAAgBA,eAAAA,CAAe,MAAM,MAAM,CAAA;AAC3C,MAAA,eAAA,CAAgBA,eAAAA,CAAe,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AACzD,MAAA,eAAA,CAAgBA,eAAAA,CAAe,SAAA,CAAU,SAAA,EAAW,WAAW,CAAA;AAC/D,MAAA,eAAA,CAAgBA,eAAAA,CAAe,SAAA,CAAU,WAAA,EAAa,aAAa,CAAA;AACnE,MAAA,eAAA,CAAgBA,eAAAA,CAAe,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AACzD,MAAA,eAAA,CAAgBA,eAAAA,CAAe,SAAA,CAAU,GAAA,EAAK,KAAK,CAAA;AACnD,MAAA,eAAA,CAAgBA,eAAAA,CAAe,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AACzD,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAeA,eAAAA,CAAe,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAClE,KAAA,EAAO,gBAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AACA,MAAA,MAAA,CAAO,cAAA,CAAeA,eAAAA,CAAe,SAAA,EAAW,mBAAA,EAAqB;AACnE,QAAA,KAAA,EAAOA,gBAAe,SAAA,CAAU,MAAA;QAChC,QAAA,EAAU,IAAA;QACV,YAAA,EAAc;OACf,CAAA;AAwBe,MAAA,SAAA,oBAAA,CACd,gBACA,aAAA,EACA,eAAA,EACA,gBAAgB,CAAA,EAChB,aAAA,GAAgD,MAAM,CAAA,EAAC;AAIvD,QAAA,MAAM,MAAA,GAAmC,MAAA,CAAO,MAAA,CAAOA,eAAAA,CAAe,SAAS,CAAA;AAC/E,QAAA,wBAAA,CAAyB,MAAM,CAAA;AAE/B,QAAA,MAAM,UAAA,GAAiD,MAAA,CAAO,MAAA,CAAO,+BAAA,CAAgC,SAAS,CAAA;AAC9G,QAAA,oCAAA,CACE,QAAQ,UAAA,EAAY,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,eAAe,aAAa,CAAA;AAGlG,QAAA,OAAO,MAAA;AACT,MAAA;eAGgB,wBAAA,CACd,cAAA,EACA,eACA,eAAA,EAA+C;AAE/C,QAAA,MAAM,MAAA,GAA6B,MAAA,CAAO,MAAA,CAAOA,eAAAA,CAAe,SAAS,CAAA;AACzE,QAAA,wBAAA,CAAyB,MAAM,CAAA;AAE/B,QAAA,MAAM,UAAA,GAA2C,MAAA,CAAO,MAAA,CAAO,4BAAA,CAA6B,SAAS,CAAA;AACrG,QAAA,iCAAA,CAAkC,QAAQ,UAAA,EAAY,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,GAAG,MAAS,CAAA;AAElH,QAAA,OAAO,MAAA;AACT,MAAA;AAEA,MAAA,SAAS,yBAAyB,MAAA,EAAsB;AACtD,QAAA,MAAA,CAAO,MAAA,GAAS,UAAA;AAChB,QAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,QAAA,MAAA,CAAO,YAAA,GAAe,MAAA;AACtB,QAAA,MAAA,CAAO,UAAA,GAAa,KAAA;AACtB,MAAA;AAEM,MAAA,SAAU,iBAAiBV,EAAAA,EAAU;AACzC,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,2BAA2B,CAAA,EAAG;AACzE,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAaU,eAAAA;AACtB,MAAA;AAQM,MAAA,SAAU,uBAAuB,MAAA,EAAsB;AAG3D,QAAA,IAAI,MAAA,CAAO,YAAY,MAAA,EAAW;AAChC,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAO,IAAA;AACT,MAAA;AAIgB,MAAA,SAAA,oBAAA,CAAwB,QAA2B,MAAA,EAAW;AAC5E,QAAA,MAAA,CAAO,UAAA,GAAa,IAAA;AAEpB,QAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,UAAA,OAAO,oBAAoB,MAAS,CAAA;;AAEtC,QAAA,IAAI,MAAA,CAAO,WAAW,SAAA,EAAW;AAC/B,UAAA,OAAO,mBAAA,CAAoB,OAAO,YAAY,CAAA;;AAGhD,QAAA,mBAAA,CAAoB,MAAM,CAAA;AAE1B,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,MAAA,KAAW,MAAA,IAAa,0BAAA,CAA2B,MAAM,CAAA,EAAG;AAC9D,UAAA,MAAM,mBAAmB,MAAA,CAAO,iBAAA;AAChC,UAAA,MAAA,CAAO,iBAAA,GAAoB,IAAI,WAAA,EAAW;AAC1C,UAAA,gBAAA,CAAiB,QAAQ,CAAA,eAAA,KAAkB;AACzC,YAAA,eAAA,CAAgB,YAAY,MAAS,CAAA;UACvC,CAAC,CAAA;;AAGH,QAAA,MAAM,mBAAA,GAAsB,MAAA,CAAO,yBAAA,CAA0B,WAAW,EAAE,MAAM,CAAA;AAChF,QAAA,OAAO,oBAAA,CAAqB,qBAAqBX,KAAI,CAAA;AACvD,MAAA;AAEM,MAAA,SAAU,oBAAuB,MAAA,EAAyB;AAG9D,QAAA,MAAA,CAAO,MAAA,GAAS,QAAA;AAEhB,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AAEtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA;;AAGF,QAAA,iCAAA,CAAkC,MAAM,CAAA;AAExC,QAAA,IAAI,6BAAA,CAAiC,MAAM,CAAA,EAAG;AAC5C,UAAA,MAAM,eAAe,MAAA,CAAO,aAAA;AAC5B,UAAA,MAAA,CAAO,aAAA,GAAgB,IAAI,WAAA,EAAW;AACtC,UAAA,YAAA,CAAa,QAAQ,CAAA,WAAA,KAAc;AACjC,YAAA,WAAA,CAAY,WAAA,EAAW;UACzB,CAAC,CAAA;;AAEL,MAAA;AAEgB,MAAA,SAAA,mBAAA,CAAuB,QAA2BI,EAAAA,EAAM;AAItE,QAAA,MAAA,CAAO,MAAA,GAAS,SAAA;AAChB,QAAA,MAAA,CAAO,YAAA,GAAeA,EAAAA;AAEtB,QAAA,MAAM,SAAS,MAAA,CAAO,OAAA;AAEtB,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA;;AAGF,QAAA,gCAAA,CAAiC,QAAQA,EAAC,CAAA;AAE1C,QAAA,IAAI,6BAAA,CAAiC,MAAM,CAAA,EAAG;AAC5C,UAAA,4CAAA,CAA6C,QAAQA,EAAC,CAAA;AACjD,QAAA,CAAA,MAAA;AAEL,UAAA,6CAAA,CAA8C,QAAQA,EAAC,CAAA;;AAE3D,MAAA;AAqBA,MAAA,SAASI,4BAA0B,IAAA,EAAY;AAC7C,QAAA,OAAO,IAAI,SAAA,CAAU,CAAA,yBAAA,EAA4B,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAC9F,MAAA;ACljBgB,MAAA,SAAA,0BAAA,CAA2B,MACA,OAAA,EAAe;AACxD,QAAA,gBAAA,CAAiB,MAAM,OAAO,CAAA;AAC9B,QAAA,MAAM,gBAAgB,IAAA,KAAI,IAAA,IAAJ,IAAA,KAAA,MAAA,GAAA,SAAA,IAAA,CAAM,aAAA;AAC5B,QAAA,mBAAA,CAAoB,aAAA,EAAe,iBAAiB,qBAAqB,CAAA;AACzE,QAAA,OAAO;AACL,UAAA,aAAA,EAAe,0BAA0B,aAAa;;AAE1D,MAAA;ACLA,MAAA,MAAM,sBAAA,GAAyB,CAAC,KAAA,KAAkC;AAChE,QAAA,OAAO,KAAA,CAAM,UAAA;AACf,MAAA,CAAA;AACA,MAAA,eAAA,CAAgB,wBAAwB,MAAM,CAAA;AAOhC,MAAA,MAAO,yBAAA,CAAyB;AAI5C,QAAA,WAAA,CAAY,OAAA,EAA4B;AACtC,UAAA,sBAAA,CAAuB,OAAA,EAAS,GAAG,2BAA2B,CAAA;AAC9D,UAAA,OAAA,GAAU,0BAAA,CAA2B,SAAS,iBAAiB,CAAA;AAC/D,UAAA,IAAA,CAAK,0CAA0C,OAAA,CAAQ,aAAA;;;;;AAMzD,QAAA,IAAI,aAAA,GAAa;AACf,UAAA,IAAI,CAAC,2BAAA,CAA4B,IAAI,CAAA,EAAG;AACtC,YAAA,MAAM,8BAA8B,eAAe,CAAA;;AAErD,UAAA,OAAO,IAAA,CAAK,uCAAA;;;;;AAMd,QAAA,IAAI,IAAA,GAAI;AACN,UAAA,IAAI,CAAC,2BAAA,CAA4B,IAAI,CAAA,EAAG;AACtC,YAAA,MAAM,8BAA8B,MAAM,CAAA;;AAE5C,UAAA,OAAO,sBAAA;;AAEV;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,0BAA0B,SAAA,EAAW;QAC3D,aAAA,EAAe,EAAE,YAAY,IAAA,EAAI;QACjC,IAAA,EAAM,EAAE,YAAY,IAAA;OACrB,CAAA;AACD,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,yBAAA,CAA0B,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UAC7E,KAAA,EAAO,2BAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,8BAA8B,IAAA,EAAY;AACjD,QAAA,OAAO,IAAI,SAAA,CAAU,CAAA,oCAAA,EAAuC,IAAI,CAAA,gDAAA,CAAkD,CAAA;AACpH,MAAA;AAEM,MAAA,SAAU,4BAA4BP,EAAAA,EAAM;AAChD,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,yCAAyC,CAAA,EAAG;AACvF,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,yBAAA;AACtB,MAAA;ACpEA,MAAA,MAAM,oBAAoB,MAAQ;AAChC,QAAA,OAAO,CAAA;AACT,MAAA,CAAA;AACA,MAAA,eAAA,CAAgB,mBAAmB,MAAM,CAAA;AAO3B,MAAA,MAAO,oBAAA,CAAoB;AAIvC,QAAA,WAAA,CAAY,OAAA,EAA4B;AACtC,UAAA,sBAAA,CAAuB,OAAA,EAAS,GAAG,sBAAsB,CAAA;AACzD,UAAA,OAAA,GAAU,0BAAA,CAA2B,SAAS,iBAAiB,CAAA;AAC/D,UAAA,IAAA,CAAK,qCAAqC,OAAA,CAAQ,aAAA;;;;;AAMpD,QAAA,IAAI,aAAA,GAAa;AACf,UAAA,IAAI,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACjC,YAAA,MAAM,yBAAyB,eAAe,CAAA;;AAEhD,UAAA,OAAO,IAAA,CAAK,kCAAA;;;;;;AAOd,QAAA,IAAI,IAAA,GAAI;AACN,UAAA,IAAI,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACjC,YAAA,MAAM,yBAAyB,MAAM,CAAA;;AAEvC,UAAA,OAAO,iBAAA;;AAEV;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,qBAAqB,SAAA,EAAW;QACtD,aAAA,EAAe,EAAE,YAAY,IAAA,EAAI;QACjC,IAAA,EAAM,EAAE,YAAY,IAAA;OACrB,CAAA;AACD,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,oBAAA,CAAqB,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UACxE,KAAA,EAAO,sBAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,yBAAyB,IAAA,EAAY;AAC5C,QAAA,OAAO,IAAI,SAAA,CAAU,CAAA,+BAAA,EAAkC,IAAI,CAAA,2CAAA,CAA6C,CAAA;AAC1G,MAAA;AAEM,MAAA,SAAU,uBAAuBA,EAAAA,EAAM;AAC3C,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,oCAAoC,CAAA,EAAG;AAClF,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,oBAAA;AACtB,MAAA;AC/DgB,MAAA,SAAA,kBAAA,CAAyB,UACA,OAAA,EAAe;AACtD,QAAA,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAClC,QAAA,MAAM,SAAS,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,MAAA;AACzB,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,MAAM,eAAe,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,YAAA;AAC/B,QAAA,MAAM,QAAQ,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,KAAA;AACxB,QAAA,MAAM,YAAY,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,SAAA;AAC5B,QAAA,MAAM,eAAe,QAAA,KAAQ,IAAA,IAAR,QAAA,KAAA,MAAA,GAAA,SAAA,QAAA,CAAU,YAAA;AAC/B,QAAA,OAAO;UACL,MAAA,EAAQ,MAAA,KAAW,SACjB,MAAA,GACA,gCAAA,CAAiC,QAAQ,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,yBAAA,CAA2B,CAAA;UAC3F,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,+BAAA,CAAgC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;AACxF,UAAA,YAAA;UACA,KAAA,EAAO,KAAA,KAAU,SACf,MAAA,GACA,+BAAA,CAAgC,OAAO,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,wBAAA,CAA0B,CAAA;UACxF,SAAA,EAAW,SAAA,KAAc,SACvB,MAAA,GACA,mCAAA,CAAoC,WAAW,QAAA,EAAW,CAAA,EAAG,OAAO,CAAA,4BAAA,CAA8B,CAAA;AACpG,UAAA;;AAEJ,MAAA;AAEA,MAAA,SAAS,+BAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAA,KAAoD,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,UAAU,CAAC,CAAA;AACpG,MAAA;AAEA,MAAA,SAAS,+BAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAA,KAAoD,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,UAAU,CAAC,CAAA;AACpG,MAAA;AAEA,MAAA,SAAS,mCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,OAAU,UAAA,KAAoD,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AACrH,MAAA;AAEA,MAAA,SAAS,gCAAA,CACP,EAAA,EACA,QAAA,EACA,OAAA,EAAe;AAEf,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA;AAC1B,QAAA,OAAO,CAAC,MAAA,KAAgB,WAAA,CAAY,IAAI,QAAA,EAAU,CAAC,MAAM,CAAC,CAAA;AAC5D,MAAA;YC7Ba,eAAA,CAAe;QAmB1B,WAAA,CAAY,cAAA,GAAuD,EAAA,EACvD,mBAAA,GAA6D,EAAA,EAC7D,mBAAA,GAA6D,EAAA,EAAE;AACzE,UAAA,IAAI,mBAAmB,MAAA,EAAW;AAChC,YAAA,cAAA,GAAiB,IAAA;;AAGnB,UAAA,MAAM,gBAAA,GAAmB,sBAAA,CAAuB,mBAAA,EAAqB,kBAAkB,CAAA;AACvF,UAAA,MAAM,gBAAA,GAAmB,sBAAA,CAAuB,mBAAA,EAAqB,iBAAiB,CAAA;AAEtF,UAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,cAAA,EAAgB,iBAAiB,CAAA;AACxE,UAAA,IAAI,WAAA,CAAY,iBAAiB,MAAA,EAAW;AAC1C,YAAA,MAAM,IAAI,WAAW,gCAAgC,CAAA;;AAEvD,UAAA,IAAI,WAAA,CAAY,iBAAiB,MAAA,EAAW;AAC1C,YAAA,MAAM,IAAI,WAAW,gCAAgC,CAAA;;AAGvD,UAAA,MAAM,qBAAA,GAAwB,oBAAA,CAAqB,gBAAA,EAAkB,CAAC,CAAA;AACtE,UAAA,MAAM,qBAAA,GAAwB,qBAAqB,gBAAgB,CAAA;AACnE,UAAA,MAAM,qBAAA,GAAwB,oBAAA,CAAqB,gBAAA,EAAkB,CAAC,CAAA;AACtE,UAAA,MAAM,qBAAA,GAAwB,qBAAqB,gBAAgB,CAAA;AAEnE,UAAA,IAAI,oBAAA;AACJ,UAAA,MAAM,YAAA,GAAe,WAAiB,CAAA,OAAA,KAAU;AAC9C,YAAA,oBAAA,GAAuB,OAAA;UACzB,CAAC,CAAA;AAED,UAAA,yBAAA,CACE,IAAA,EAAM,YAAA,EAAc,qBAAA,EAAuB,qBAAA,EAAuB,uBAAuB,qBAAqB,CAAA;AAEhH,UAAA,oDAAA,CAAqD,MAAM,WAAW,CAAA;AAEtE,UAAA,IAAI,WAAA,CAAY,UAAU,MAAA,EAAW;AACnC,YAAA,oBAAA,CAAqB,WAAA,CAAY,KAAA,CAAM,IAAA,CAAK,0BAA0B,CAAC,CAAA;AAClE,UAAA,CAAA,MAAA;AACL,YAAA,oBAAA,CAAqB,MAAS,CAAA;;;;;;AAOlC,QAAA,IAAI,QAAA,GAAQ;AACV,UAAA,IAAI,CAAC,iBAAA,CAAkB,IAAI,CAAA,EAAG;AAC5B,YAAA,MAAM,0BAA0B,UAAU,CAAA;;AAG5C,UAAA,OAAO,IAAA,CAAK,SAAA;;;;;AAMd,QAAA,IAAI,QAAA,GAAQ;AACV,UAAA,IAAI,CAAC,iBAAA,CAAkB,IAAI,CAAA,EAAG;AAC5B,YAAA,MAAM,0BAA0B,UAAU,CAAA;;AAG5C,UAAA,OAAO,IAAA,CAAK,SAAA;;AAEf;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,gBAAgB,SAAA,EAAW;QACjD,QAAA,EAAU,EAAE,YAAY,IAAA,EAAI;QAC5B,QAAA,EAAU,EAAE,YAAY,IAAA;OACzB,CAAA;AACD,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,eAAA,CAAgB,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UACnE,KAAA,EAAO,iBAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AA0CA,MAAA,SAAS,0BAAgC,MAAA,EACA,YAAA,EACA,qBAAA,EACA,qBAAA,EACA,uBACA,qBAAA,EAAqD;AAC5F,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,OAAO,YAAA;;AAGT,QAAA,SAAS,eAAe,KAAA,EAAQ;AAC9B,UAAA,OAAO,wCAAA,CAAyC,QAAQ,KAAK,CAAA;;AAG/D,QAAA,SAAS,eAAe,MAAA,EAAW;AACjC,UAAA,OAAO,wCAAA,CAAyC,QAAQ,MAAM,CAAA;;AAGhE,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,OAAO,yCAAyC,MAAM,CAAA;;AAGxD,QAAA,MAAA,CAAO,YAAY,oBAAA,CAAqB,cAAA,EAAgB,gBAAgB,cAAA,EAAgB,cAAA,EAChD,uBAAuB,qBAAqB,CAAA;AAEpF,QAAA,SAAS,aAAA,GAAa;AACpB,UAAA,OAAO,0CAA0C,MAAM,CAAA;;AAGzD,QAAA,SAAS,gBAAgB,MAAA,EAAW;AAClC,UAAA,OAAO,2CAAA,CAA4C,QAAQ,MAAM,CAAA;;AAGnE,QAAA,MAAA,CAAO,YAAY,oBAAA,CAAqB,cAAA,EAAgB,aAAA,EAAe,eAAA,EAAiB,uBAChD,qBAAqB,CAAA;AAG7D,QAAA,MAAA,CAAO,aAAA,GAAgB,MAAA;AACvB,QAAA,MAAA,CAAO,0BAAA,GAA6B,MAAA;AACpC,QAAA,MAAA,CAAO,kCAAA,GAAqC,MAAA;AAC5C,QAAA,8BAAA,CAA+B,QAAQ,IAAI,CAAA;AAE3C,QAAA,MAAA,CAAO,0BAAA,GAA6B,MAAA;AACtC,MAAA;AAEA,MAAA,SAAS,kBAAkBA,EAAAA,EAAU;AACnC,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,4BAA4B,CAAA,EAAG;AAC1E,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,eAAA;AACtB,MAAA;AAGA,MAAA,SAAS,oBAAA,CAAqB,QAAyBG,EAAAA,EAAM;AAC3D,QAAA,oCAAA,CAAqC,MAAA,CAAO,SAAA,CAAU,yBAAA,EAA2BA,EAAC,CAAA;AAClF,QAAA,2CAAA,CAA4C,QAAQA,EAAC,CAAA;AACvD,MAAA;AAEA,MAAA,SAAS,2CAAA,CAA4C,QAAyBA,EAAAA,EAAM;AAClF,QAAA,+CAAA,CAAgD,OAAO,0BAA0B,CAAA;AACjF,QAAA,4CAAA,CAA6C,MAAA,CAAO,SAAA,CAAU,yBAAA,EAA2BA,EAAC,CAAA;AAC1F,QAAA,2BAAA,CAA4B,MAAM,CAAA;AACpC,MAAA;AAEA,MAAA,SAAS,4BAA4B,MAAA,EAAuB;AAC1D,QAAA,IAAI,OAAO,aAAA,EAAe;AAIxB,UAAA,8BAAA,CAA+B,QAAQ,KAAK,CAAA;;AAEhD,MAAA;AAEA,MAAA,SAAS,8BAAA,CAA+B,QAAyB,YAAA,EAAqB;AAIpF,QAAA,IAAI,MAAA,CAAO,+BAA+B,MAAA,EAAW;AACnD,UAAA,MAAA,CAAO,kCAAA,EAAkC;;AAG3C,QAAA,MAAA,CAAO,0BAAA,GAA6B,WAAW,CAAA,OAAA,KAAU;AACvD,UAAA,MAAA,CAAO,kCAAA,GAAqC,OAAA;QAC9C,CAAC,CAAA;AAED,QAAA,MAAA,CAAO,aAAA,GAAgB,YAAA;AACzB,MAAA;YASa,gCAAA,CAAgC;QAgB3C,WAAA,GAAA;AACE,UAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;;;;;AAM3C,QAAA,IAAI,WAAA,GAAW;AACb,UAAA,IAAI,CAAC,kCAAA,CAAmC,IAAI,CAAA,EAAG;AAC7C,YAAA,MAAM,qCAAqC,aAAa,CAAA;;AAG1D,UAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,0BAAA,CAA2B,SAAA,CAAU,yBAAA;AACrE,UAAA,OAAO,8CAA8C,kBAAkB,CAAA;;AAOzE,QAAA,OAAA,CAAQ,QAAW,MAAA,EAAU;AAC3B,UAAA,IAAI,CAAC,kCAAA,CAAmC,IAAI,CAAA,EAAG;AAC7C,YAAA,MAAM,qCAAqC,SAAS,CAAA;;AAGtD,UAAA,uCAAA,CAAwC,MAAM,KAAK,CAAA;;;;;;AAOrD,QAAA,KAAA,CAAM,SAAc,MAAA,EAAS;AAC3B,UAAA,IAAI,CAAC,kCAAA,CAAmC,IAAI,CAAA,EAAG;AAC7C,YAAA,MAAM,qCAAqC,OAAO,CAAA;;AAGpD,UAAA,qCAAA,CAAsC,MAAM,MAAM,CAAA;;;;;;QAOpD,SAAA,GAAS;AACP,UAAA,IAAI,CAAC,kCAAA,CAAmC,IAAI,CAAA,EAAG;AAC7C,YAAA,MAAM,qCAAqC,WAAW,CAAA;;AAGxD,UAAA,yCAAA,CAA0C,IAAI,CAAA;;AAEjD;AAED,MAAA,MAAA,CAAO,gBAAA,CAAiB,iCAAiC,SAAA,EAAW;QAClE,OAAA,EAAS,EAAE,YAAY,IAAA,EAAI;QAC3B,KAAA,EAAO,EAAE,YAAY,IAAA,EAAI;QACzB,SAAA,EAAW,EAAE,YAAY,IAAA,EAAI;QAC7B,WAAA,EAAa,EAAE,YAAY,IAAA;OAC5B,CAAA;AACD,MAAA,eAAA,CAAgB,gCAAA,CAAiC,SAAA,CAAU,OAAA,EAAS,SAAS,CAAA;AAC7E,MAAA,eAAA,CAAgB,gCAAA,CAAiC,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACzE,MAAA,eAAA,CAAgB,gCAAA,CAAiC,SAAA,CAAU,SAAA,EAAW,WAAW,CAAA;AACjF,MAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,EAAU;AAC1C,QAAA,MAAA,CAAO,cAAA,CAAe,gCAAA,CAAiC,SAAA,EAAW,MAAA,CAAO,WAAA,EAAa;UACpF,KAAA,EAAO,kCAAA;UACP,YAAA,EAAc;SACf,CAAA;AACH,MAAA;AAIA,MAAA,SAAS,mCAA4CH,EAAAA,EAAM;AACzD,QAAA,IAAI,CAAC,YAAA,CAAaA,EAAC,CAAA,EAAG;AACpB,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,EAAAA,EAAG,4BAA4B,CAAA,EAAG;AAC1E,UAAA,OAAO,KAAA;;AAGT,QAAA,OAAOA,EAAAA,YAAa,gCAAA;AACtB,MAAA;AAEA,MAAA,SAAS,qCAAA,CAA4C,MAAA,EACA,UAAA,EACA,kBAAA,EACA,gBACA,eAAA,EAA+C;AAIlG,QAAA,UAAA,CAAW,0BAAA,GAA6B,MAAA;AACxC,QAAA,MAAA,CAAO,0BAAA,GAA6B,UAAA;AAEpC,QAAA,UAAA,CAAW,mBAAA,GAAsB,kBAAA;AACjC,QAAA,UAAA,CAAW,eAAA,GAAkB,cAAA;AAC7B,QAAA,UAAA,CAAW,gBAAA,GAAmB,eAAA;AAE9B,QAAA,UAAA,CAAW,cAAA,GAAiB,MAAA;AAC5B,QAAA,UAAA,CAAW,sBAAA,GAAyB,MAAA;AACpC,QAAA,UAAA,CAAW,qBAAA,GAAwB,MAAA;AACrC,MAAA;AAEA,MAAA,SAAS,oDAAA,CAA2D,QACA,WAAA,EAAuC;AACzG,QAAA,MAAM,UAAA,GAAkD,MAAA,CAAO,MAAA,CAAO,gCAAA,CAAiC,SAAS,CAAA;AAEhH,QAAA,IAAI,kBAAA;AACJ,QAAA,IAAI,cAAA;AACJ,QAAA,IAAI,eAAA;AAEJ,QAAA,IAAI,WAAA,CAAY,cAAc,MAAA,EAAW;AACvC,UAAA,kBAAA,GAAqB,CAAA,KAAA,KAAS,WAAA,CAAY,SAAA,CAAW,KAAA,EAAO,UAAU,CAAA;AACjE,QAAA,CAAA,MAAA;AACL,UAAA,kBAAA,GAAqB,CAAA,KAAA,KAAQ;AAC3B,YAAA,IAAI;AACF,cAAA,uCAAA,CAAwC,YAAY,KAAqB,CAAA;AACzE,cAAA,OAAO,oBAAoB,KAAA,CAAS,CAAA;qBAC7B,gBAAA,EAAkB;AACzB,cAAA,OAAO,oBAAoB,gBAAgB,CAAA;;AAE/C,UAAA,CAAA;;AAGF,QAAA,IAAI,WAAA,CAAY,UAAU,MAAA,EAAW;AACnC,UAAA,cAAA,GAAiB,MAAM,WAAA,CAAY,KAAA,CAAO,UAAU,CAAA;AAC/C,QAAA,CAAA,MAAA;AACL,UAAA,cAAA,GAAiB,MAAM,oBAAoB,MAAS,CAAA;;AAGtD,QAAA,IAAI,WAAA,CAAY,WAAW,MAAA,EAAW;AACpC,UAAA,eAAA,GAAkB,CAAA,MAAA,KAAU,WAAA,CAAY,MAAA,CAAQ,MAAM,CAAA;AACjD,QAAA,CAAA,MAAA;AACL,UAAA,eAAA,GAAkB,MAAM,oBAAoB,MAAS,CAAA;;AAGvD,QAAA,qCAAA,CAAsC,MAAA,EAAQ,UAAA,EAAY,kBAAA,EAAoB,cAAA,EAAgB,eAAe,CAAA;AAC/G,MAAA;AAEA,MAAA,SAAS,gDAAgD,UAAA,EAAiD;AACxG,QAAA,UAAA,CAAW,mBAAA,GAAsB,MAAA;AACjC,QAAA,UAAA,CAAW,eAAA,GAAkB,MAAA;AAC7B,QAAA,UAAA,CAAW,gBAAA,GAAmB,MAAA;AAChC,MAAA;AAEA,MAAA,SAAS,uCAAA,CAA2C,YAAiD,KAAA,EAAQ;AAC3G,QAAA,MAAM,SAAS,UAAA,CAAW,0BAAA;AAC1B,QAAA,MAAM,kBAAA,GAAqB,OAAO,SAAA,CAAU,yBAAA;AAC5C,QAAA,IAAI,CAAC,gDAAA,CAAiD,kBAAkB,CAAA,EAAG;AACzE,UAAA,MAAM,IAAI,UAAU,sDAAsD,CAAA;;AAM5E,QAAA,IAAI;AACF,UAAA,sCAAA,CAAuC,oBAAoB,KAAK,CAAA;iBACzDG,EAAAA,EAAG;AAEV,UAAA,2CAAA,CAA4C,QAAQA,EAAC,CAAA;AAErD,UAAA,MAAM,OAAO,SAAA,CAAU,YAAA;;AAGzB,QAAA,MAAM,YAAA,GAAe,+CAA+C,kBAAkB,CAAA;AACtF,QAAA,IAAI,YAAA,KAAiB,OAAO,aAAA,EAAe;AAEzC,UAAA,8BAAA,CAA+B,QAAQ,IAAI,CAAA;;AAE/C,MAAA;AAEA,MAAA,SAAS,qCAAA,CAAsC,YAAmDA,EAAAA,EAAM;AACtG,QAAA,oBAAA,CAAqB,UAAA,CAAW,4BAA4BA,EAAC,CAAA;AAC/D,MAAA;AAEA,MAAA,SAAS,gDAAA,CAAuD,YACA,KAAA,EAAQ;AACtE,QAAA,MAAM,gBAAA,GAAmB,UAAA,CAAW,mBAAA,CAAoB,KAAK,CAAA;AAC7D,QAAA,OAAO,oBAAA,CAAqB,gBAAA,EAAkB,MAAA,EAAW,CAAAE,EAAAA,KAAI;AAC3D,UAAA,oBAAA,CAAqB,UAAA,CAAW,4BAA4BA,EAAC,CAAA;AAC7D,UAAA,MAAMA,EAAAA;QACR,CAAC,CAAA;AACH,MAAA;AAEA,MAAA,SAAS,0CAA6C,UAAA,EAA+C;AACnG,QAAA,MAAM,SAAS,UAAA,CAAW,0BAAA;AAC1B,QAAA,MAAM,kBAAA,GAAqB,OAAO,SAAA,CAAU,yBAAA;AAE5C,QAAA,oCAAA,CAAqC,kBAAkB,CAAA;AAEvD,QAAA,MAAM,KAAA,GAAQ,IAAI,SAAA,CAAU,4BAA4B,CAAA;AACxD,QAAA,2CAAA,CAA4C,QAAQ,KAAK,CAAA;AAC3D,MAAA;AAIA,MAAA,SAAS,wCAAA,CAA+C,QAA+B,KAAA,EAAQ;AAG7F,QAAA,MAAM,aAAa,MAAA,CAAO,0BAAA;AAE1B,QAAA,IAAI,OAAO,aAAA,EAAe;AACxB,UAAA,MAAM,4BAA4B,MAAA,CAAO,0BAAA;AAEzC,UAAA,OAAO,oBAAA,CAAqB,2BAA2B,MAAK;AAC1D,YAAA,MAAM,WAAW,MAAA,CAAO,SAAA;AACxB,YAAA,MAAM,QAAQ,QAAA,CAAS,MAAA;AACvB,YAAA,IAAI,UAAU,UAAA,EAAY;AACxB,cAAA,MAAM,QAAA,CAAS,YAAA;;AAGjB,YAAA,OAAO,gDAAA,CAAuD,YAAY,KAAK,CAAA;UACjF,CAAC,CAAA;;AAGH,QAAA,OAAO,gDAAA,CAAuD,YAAY,KAAK,CAAA;AACjF,MAAA;AAEA,MAAA,SAAS,wCAAA,CAA+C,QAA+B,MAAA,EAAW;AAChG,QAAA,MAAM,aAAa,MAAA,CAAO,0BAAA;AAC1B,QAAA,IAAI,UAAA,CAAW,mBAAmB,MAAA,EAAW;AAC3C,UAAA,OAAO,UAAA,CAAW,cAAA;;AAIpB,QAAA,MAAM,WAAW,MAAA,CAAO,SAAA;AAIxB,QAAA,UAAA,CAAW,cAAA,GAAiB,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACzD,UAAA,UAAA,CAAW,sBAAA,GAAyB,OAAA;AACpC,UAAA,UAAA,CAAW,qBAAA,GAAwB,MAAA;QACrC,CAAC,CAAA;AAED,QAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,gBAAA,CAAiB,MAAM,CAAA;AACxD,QAAA,+CAAA,CAAgD,UAAU,CAAA;AAE1D,QAAA,WAAA,CAAY,eAAe,MAAK;AAC9B,UAAA,IAAI,QAAA,CAAS,WAAW,SAAA,EAAW;AACjC,YAAA,oCAAA,CAAqC,UAAA,EAAY,SAAS,YAAY,CAAA;AACjE,UAAA,CAAA,MAAA;AACL,YAAA,oCAAA,CAAqC,QAAA,CAAS,2BAA2B,MAAM,CAAA;AAC/E,YAAA,qCAAA,CAAsC,UAAU,CAAA;;AAElD,UAAA,OAAO,IAAA;AACN,QAAA,CAAA,EAAA,CAAAA,EAAAA,KAAI;AACL,UAAA,oCAAA,CAAqC,QAAA,CAAS,2BAA2BA,EAAC,CAAA;AAC1E,UAAA,oCAAA,CAAqC,YAAYA,EAAC,CAAA;AAClD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAED,QAAA,OAAO,UAAA,CAAW,cAAA;AACpB,MAAA;AAEA,MAAA,SAAS,yCAA+C,MAAA,EAA6B;AACnF,QAAA,MAAM,aAAa,MAAA,CAAO,0BAAA;AAC1B,QAAA,IAAI,UAAA,CAAW,mBAAmB,MAAA,EAAW;AAC3C,UAAA,OAAO,UAAA,CAAW,cAAA;;AAIpB,QAAA,MAAM,WAAW,MAAA,CAAO,SAAA;AAIxB,QAAA,UAAA,CAAW,cAAA,GAAiB,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACzD,UAAA,UAAA,CAAW,sBAAA,GAAyB,OAAA;AACpC,UAAA,UAAA,CAAW,qBAAA,GAAwB,MAAA;QACrC,CAAC,CAAA;AAED,QAAA,MAAM,YAAA,GAAe,WAAW,eAAA,EAAe;AAC/C,QAAA,+CAAA,CAAgD,UAAU,CAAA;AAE1D,QAAA,WAAA,CAAY,cAAc,MAAK;AAC7B,UAAA,IAAI,QAAA,CAAS,WAAW,SAAA,EAAW;AACjC,YAAA,oCAAA,CAAqC,UAAA,EAAY,SAAS,YAAY,CAAA;AACjE,UAAA,CAAA,MAAA;AACL,YAAA,oCAAA,CAAqC,SAAS,yBAAyB,CAAA;AACvE,YAAA,qCAAA,CAAsC,UAAU,CAAA;;AAElD,UAAA,OAAO,IAAA;AACN,QAAA,CAAA,EAAA,CAAAA,EAAAA,KAAI;AACL,UAAA,oCAAA,CAAqC,QAAA,CAAS,2BAA2BA,EAAC,CAAA;AAC1E,UAAA,oCAAA,CAAqC,YAAYA,EAAC,CAAA;AAClD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAED,QAAA,OAAO,UAAA,CAAW,cAAA;AACpB,MAAA;AAIA,MAAA,SAAS,0CAA0C,MAAA,EAAuB;AAMxE,QAAA,8BAAA,CAA+B,QAAQ,KAAK,CAAA;AAG5C,QAAA,OAAO,MAAA,CAAO,0BAAA;AAChB,MAAA;AAEA,MAAA,SAAS,2CAAA,CAAkD,QAA+B,MAAA,EAAW;AACnG,QAAA,MAAM,aAAa,MAAA,CAAO,0BAAA;AAC1B,QAAA,IAAI,UAAA,CAAW,mBAAmB,MAAA,EAAW;AAC3C,UAAA,OAAO,UAAA,CAAW,cAAA;;AAIpB,QAAA,MAAM,WAAW,MAAA,CAAO,SAAA;AAKxB,QAAA,UAAA,CAAW,cAAA,GAAiB,UAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAU;AACzD,UAAA,UAAA,CAAW,sBAAA,GAAyB,OAAA;AACpC,UAAA,UAAA,CAAW,qBAAA,GAAwB,MAAA;QACrC,CAAC,CAAA;AAED,QAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,gBAAA,CAAiB,MAAM,CAAA;AACxD,QAAA,+CAAA,CAAgD,UAAU,CAAA;AAE1D,QAAA,WAAA,CAAY,eAAe,MAAK;AAC9B,UAAA,IAAI,QAAA,CAAS,WAAW,SAAA,EAAW;AACjC,YAAA,oCAAA,CAAqC,UAAA,EAAY,SAAS,YAAY,CAAA;AACjE,UAAA,CAAA,MAAA;AACL,YAAA,4CAAA,CAA6C,QAAA,CAAS,2BAA2B,MAAM,CAAA;AACvF,YAAA,2BAAA,CAA4B,MAAM,CAAA;AAClC,YAAA,qCAAA,CAAsC,UAAU,CAAA;;AAElD,UAAA,OAAO,IAAA;AACN,QAAA,CAAA,EAAA,CAAAA,EAAAA,KAAI;AACL,UAAA,4CAAA,CAA6C,QAAA,CAAS,2BAA2BA,EAAC,CAAA;AAClF,UAAA,2BAAA,CAA4B,MAAM,CAAA;AAClC,UAAA,oCAAA,CAAqC,YAAYA,EAAC,CAAA;AAClD,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAED,QAAA,OAAO,UAAA,CAAW,cAAA;AACpB,MAAA;AAIA,MAAA,SAAS,qCAAqC,IAAA,EAAY;AACxD,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,2CAAA,EAA8C,IAAI,CAAA,uDAAA,CAAyD,CAAA;AAC/G,MAAA;AAEM,MAAA,SAAU,sCAAsC,UAAA,EAAiD;AACrG,QAAA,IAAI,UAAA,CAAW,2BAA2B,MAAA,EAAW;AACnD,UAAA;;AAGF,QAAA,UAAA,CAAW,sBAAA,EAAsB;AACjC,QAAA,UAAA,CAAW,sBAAA,GAAyB,MAAA;AACpC,QAAA,UAAA,CAAW,qBAAA,GAAwB,MAAA;AACrC,MAAA;AAEgB,MAAA,SAAA,oCAAA,CAAqC,YAAmD,MAAA,EAAW;AACjH,QAAA,IAAI,UAAA,CAAW,0BAA0B,MAAA,EAAW;AAClD,UAAA;;AAGF,QAAA,yBAAA,CAA0B,WAAW,cAAe,CAAA;AACpD,QAAA,UAAA,CAAW,sBAAsB,MAAM,CAAA;AACvC,QAAA,UAAA,CAAW,sBAAA,GAAyB,MAAA;AACpC,QAAA,UAAA,CAAW,qBAAA,GAAwB,MAAA;AACrC,MAAA;AAIA,MAAA,SAAS,0BAA0B,IAAA,EAAY;AAC7C,QAAA,OAAO,IAAI,SAAA,CACT,CAAA,0BAAA,EAA6B,IAAI,CAAA,sCAAA,CAAwC,CAAA;AAC7E,MAAA;;;;;;;;;;;;;;;;;;;AC7pBA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAEA,IAAA,IAAMM,UAAAA,GAAY,KAAA;AAElB,IAAA,IAAI,CAAC,WAAW,cAAA,EAAgB;AAI9B,MAAA,IAAI;AACF,QAAA,MAAMC,QAAAA,GAAU,UAAQ,SAAc,CAAA;AACtC,QAAA,MAAM,EAAE,aAAY,GAAIA,QAAAA;AACxB,QAAA,IAAI;AACF,UAAAA,QAAAA,CAAQ,cAAc,MAAM;AAAA,UAAC,CAAA;AAC7B,UAAA,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,SAAA,CAAQ,YAAiB,CAAC,CAAA;AACpD,UAAAA,SAAQ,WAAA,GAAc,WAAA;AAAA,QACxB,SAAS,KAAA,EAAO;AACd,UAAAA,SAAQ,WAAA,GAAc,WAAA;AACtB,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,SAAS,KAAA,EAAO;AAEd,QAAA,MAAA,CAAO,MAAA,CAAO,YAAY,uBAAA,EAAuD,CAAA;AAAA,MACnF;AAAA,IACF;AAEA,IAAA,IAAI;AAGF,MAAA,MAAM,EAAE,IAAA,EAAAC,KAAAA,EAAK,GAAI,UAAQ,QAAQ,CAAA;AACjC,MAAA,IAAIA,KAAAA,IAAQ,CAACA,KAAAA,CAAK,SAAA,CAAU,MAAA,EAAQ;AAClC,QAAAA,KAAAA,CAAK,SAAA,CAAU,MAAA,GAAS,SAAS,KAAM,MAAA,EAAQ;AAC7C,UAAA,IAAI,QAAA,GAAW,CAAA;AACf,UAAA,MAAM,IAAA,GAAO,IAAA;AAEb,UAAA,OAAO,IAAI,cAAA,CAAe;AAAA,YACxB,IAAA,EAAM,OAAA;AAAA,YACN,MAAM,KAAM,IAAA,EAAM;AAChB,cAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU,IAAA,CAAK,IAAI,IAAA,CAAK,IAAA,EAAM,QAAA,GAAWF,UAAS,CAAC,CAAA;AAC5E,cAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,WAAA,EAAY;AACvC,cAAA,QAAA,IAAY,MAAA,CAAO,UAAA;AACnB,cAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,UAAA,CAAW,MAAM,CAAC,CAAA;AAEnC,cAAA,IAAI,QAAA,KAAa,KAAK,IAAA,EAAM;AAC1B,gBAAA,IAAA,CAAK,KAAA,EAAM;AAAA,cACb;AAAA,YACF;AAAA,WACD,CAAA;AAAA,QACH,CAAA;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AAAA,IAAC;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtCjB,gBAAiB,UAAA,CAAY,KAAA,EAAOG,MAAAA,GAAQ,IAAA,EAAM;AAChD,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,YAAY,IAAA,EAAM;AACpB,MAAA;AAAA;AAAA,QAA2D,KAAK,MAAA;AAAO,OAAA;AAAA,IACzE,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAG;AACnC,MAAA,IAAIA,MAAAA,EAAO;AACT,QAAA,IAAI,WAAW,IAAA,CAAK,UAAA;AACpB,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,UAAA;AACnC,QAAA,OAAO,aAAa,GAAA,EAAK;AACvB,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,GAAA,GAAM,UAAU,SAAS,CAAA;AAC/C,UAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,QAAA,EAAU,WAAW,IAAI,CAAA;AACzD,UAAA,QAAA,IAAY,KAAA,CAAM,UAAA;AAClB,UAAA,MAAM,IAAI,WAAW,KAAK,CAAA;AAAA,QAC5B;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,IAAA;AAAA,MACR;AAAA,IAEF,CAAA,MAAO;AAEL,MAAA,IAAI,WAAW,CAAA,EAAG,CAAA;AAAA;AAAA,QAA0B;AAAA,OAAA;AAC5C,MAAA,OAAO,QAAA,KAAa,EAAE,IAAA,EAAM;AAC1B,QAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,KAAA,CAAM,QAAA,EAAU,IAAA,CAAK,IAAI,CAAA,CAAE,IAAA,EAAM,QAAA,GAAW,SAAS,CAAC,CAAA;AACtE,QAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,WAAA,EAAY;AACvC,QAAA,QAAA,IAAY,MAAA,CAAO,UAAA;AACnB,QAAA,MAAM,IAAI,WAAW,MAAM,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AACF;AAxCA,IAQM,SAAA,CAAA,CARN,MAAA,CAAA,CAAA,KAAA,CAAA,CAAA,KAAA,CAAA,CAAA,QAAA,CAAA,CAAA,EAAA,CAAA,CA0CM,KAAA,CAAA,CA8MO,IAAA,CAAA,CACN;AAzPP,IAAA,eAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kCAAA,GAAA;AAKA,IAAO,OAAA,CAAA,eAAA,EAAA,CAAA;AAGP,IAAM,SAAA,GAAY,KAAA;AAkClB,IAAM,SAAQ,EAAA,GAAA,MAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAevB,YAAa,SAAA,GAAY,EAAC,EAAG,OAAA,GAAU,EAAC,EAAG;AAb3C;AAAA,QAAA,YAAA,CAAA,IAAA,EAAA,MAAA,EAAS,EAAC,CAAA;AACV,QAAA,YAAA,CAAA,IAAA,EAAA,KAAA,EAAQ,EAAA,CAAA;AACR,QAAA,YAAA,CAAA,IAAA,EAAA,KAAA,EAAQ,CAAA,CAAA;AACR,QAAA,YAAA,CAAA,IAAA,EAAA,QAAA,EAAW,aAAA,CAAA;AAWT,QAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,SAAA,KAAc,IAAA,EAAM;AACvD,UAAA,MAAM,IAAI,UAAU,mFAAqF,CAAA;AAAA,QAC3G;AAEA,QAAA,IAAI,OAAO,SAAA,CAAU,MAAA,CAAO,QAAQ,MAAM,UAAA,EAAY;AACpD,UAAA,MAAM,IAAI,UAAU,kFAAoF,CAAA;AAAA,QAC1G;AAEA,QAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAO,YAAY,UAAA,EAAY;AAChE,UAAA,MAAM,IAAI,UAAU,uEAAyE,CAAA;AAAA,QAC/F;AAEA,QAAA,IAAI,OAAA,KAAY,IAAA,EAAM,OAAA,GAAU,EAAC;AAEjC,QAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,QAAA,KAAA,MAAW,WAAW,SAAA,EAAW;AAC/B,UAAA,IAAI,IAAA;AACJ,UAAA,IAAI,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAG;AAC/B,YAAA,IAAA,GAAO,IAAI,UAAA,CAAW,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,OAAA,CAAQ,UAAA,GAAa,OAAA,CAAQ,UAAU,CAAC,CAAA;AAAA,UACzG,CAAA,MAAA,IAAW,mBAAmB,WAAA,EAAa;AACzC,YAAA,IAAA,GAAO,IAAI,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,UACxC,CAAA,MAAA,IAAW,mBAAmB,EAAA,EAAM;AAClC,YAAA,IAAA,GAAO,OAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,OAAA,CAAQ,MAAA,CAAO,CAAA,EAAG,OAAO,CAAA,CAAE,CAAA;AAAA,UACpC;AAEA,UAAA,YAAA,CAAA,IAAA,EAAK,KAAA,EAAL,mBAAK,KAAA,CAAA,IAAS,WAAA,CAAY,OAAO,IAAI,CAAA,GAAI,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,IAAA,CAAA,CAAA;AAChE,UAAA,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,CAAO,KAAK,IAAI,CAAA;AAAA,QACvB;AAEA,QAAA,YAAA,CAAA,IAAA,EAAK,UAAW,CAAA,EAAG,OAAA,CAAQ,YAAY,MAAA,GAAY,aAAA,GAAgB,QAAQ,OAAO,CAAA,CAAA,CAAA;AAClF,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA,KAAS,SAAY,EAAA,GAAK,MAAA,CAAO,QAAQ,IAAI,CAAA;AAClE,QAAA,YAAA,CAAA,IAAA,EAAK,KAAA,EAAQ,gBAAA,CAAiB,IAAA,CAAK,IAAI,IAAI,IAAA,GAAO,EAAA,CAAA;AAAA,MACpD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,IAAA,GAAQ;AACV,QAAA,OAAO,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,IAAA,GAAQ;AACV,QAAA,OAAO,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAA,GAAQ;AAGZ,QAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,QAAA,IAAI,GAAA,GAAM,EAAA;AACV,QAAA,WAAA,MAAiB,IAAA,IAAQ,UAAA,CAAW,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,EAAQ,KAAK,CAAA,EAAG;AACvD,UAAA,GAAA,IAAO,QAAQ,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,QAC9C;AAEA,QAAA,GAAA,IAAO,QAAQ,MAAA,EAAO;AACtB,QAAA,OAAO,GAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,WAAA,GAAe;AAMnB,QAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AACrC,QAAA,IAAI,MAAA,GAAS,CAAA;AACb,QAAA,WAAA,MAAiB,KAAA,IAAS,UAAA,CAAW,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,EAAQ,KAAK,CAAA,EAAG;AACxD,UAAA,IAAA,CAAK,GAAA,CAAI,OAAO,MAAM,CAAA;AACtB,UAAA,MAAA,IAAU,KAAA,CAAM,MAAA;AAAA,QAClB;AAEA,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA,MAEA,MAAA,GAAU;AACR,QAAA,MAAM,EAAA,GAAK,UAAA,CAAW,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,EAAQ,IAAI,CAAA;AAEvC,QAAA,OAAO,IAAI,WAAW,cAAA,CAAe;AAAA;AAAA,UAEnC,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,KAAM,IAAA,EAAM;AAChB,YAAA,MAAM,KAAA,GAAQ,MAAM,EAAA,CAAG,IAAA,EAAK;AAC5B,YAAA,KAAA,CAAM,OAAO,IAAA,CAAK,KAAA,KAAU,IAAA,CAAK,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,UACtD,CAAA;AAAA,UAEA,MAAM,MAAA,GAAU;AACd,YAAA,MAAM,GAAG,MAAA,EAAO;AAAA,UAClB;AAAA,SACD,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,MAAO,KAAA,GAAQ,CAAA,EAAG,MAAM,IAAA,CAAK,IAAA,EAAM,OAAO,EAAA,EAAI;AAC5C,QAAA,MAAM,EAAE,MAAK,GAAI,IAAA;AAEjB,QAAA,IAAI,aAAA,GAAgB,KAAA,GAAQ,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,KAAA,EAAO,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,IAAI,CAAA;AAChF,QAAA,IAAI,WAAA,GAAc,GAAA,GAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,GAAA,EAAK,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAI,CAAA;AAExE,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,eAAe,CAAC,CAAA;AACpD,QAAA,MAAM,QAAQ,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA;AACnB,QAAA,MAAM,YAAY,EAAC;AACnB,QAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,QAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AAExB,UAAA,IAAI,SAAS,IAAA,EAAM;AACjB,YAAA;AAAA,UACF;AAEA,UAAA,MAAMC,QAAO,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,GAAI,IAAA,CAAK,aAAa,IAAA,CAAK,IAAA;AAC/D,UAAA,IAAI,aAAA,IAAiBA,SAAQ,aAAA,EAAe;AAG1C,YAAA,aAAA,IAAiBA,KAAAA;AACjB,YAAA,WAAA,IAAeA,KAAAA;AAAA,UACjB,CAAA,MAAO;AACL,YAAA,IAAI,KAAA;AACJ,YAAA,IAAI,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAG;AAC5B,cAAA,KAAA,GAAQ,KAAK,QAAA,CAAS,aAAA,EAAe,KAAK,GAAA,CAAIA,KAAAA,EAAM,WAAW,CAAC,CAAA;AAChE,cAAA,KAAA,IAAS,KAAA,CAAM,UAAA;AAAA,YACjB,CAAA,MAAO;AACL,cAAA,KAAA,GAAQ,KAAK,KAAA,CAAM,aAAA,EAAe,KAAK,GAAA,CAAIA,KAAAA,EAAM,WAAW,CAAC,CAAA;AAC7D,cAAA,KAAA,IAAS,KAAA,CAAM,IAAA;AAAA,YACjB;AACA,YAAA,WAAA,IAAeA,KAAAA;AACf,YAAA,SAAA,CAAU,KAAK,KAAK,CAAA;AACpB,YAAA,aAAA,GAAgB,CAAA;AAAA,UAClB;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,IAAI,EAAA,CAAK,EAAC,EAAG,EAAE,IAAA,EAAM,MAAA,CAAO,IAAI,CAAA,CAAE,WAAA,EAAY,EAAG,CAAA;AAC9D,QAAA,YAAA,CAAA,IAAA,EAAK,KAAA,EAAQ,IAAA,CAAA;AACb,QAAA,YAAA,CAAA,IAAA,EAAK,MAAA,EAAS,SAAA,CAAA;AAEd,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAK;AAC1B,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAEA,QAAQ,MAAA,CAAO,WAAW,CAAA,CAAG,MAAA,EAAQ;AACnC,QAAA,OACE,MAAA,IACA,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,MAAA,CAAO,WAAA,KAAgB,eAE5B,OAAO,MAAA,CAAO,WAAW,UAAA,IACzB,OAAO,OAAO,WAAA,KAAgB,UAAA,CAAA,IAEhC,gBAAgB,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,MAEnD;AAAA,KACF,EAnME,MAAA,GAAA,IAAA,OAAA,EAAA,EACA,KAAA,GAAA,IAAA,OAAA,EAAA,EACA,KAAA,GAAA,IAAA,OAAA,EAAA,EACA,QAAA,GAAA,IAAA,OAAA,EAAA,EALY,EAAA,CAAA;AAuMd,IAAA,MAAA,CAAO,gBAAA,CAAiB,MAAM,SAAA,EAAW;AAAA,MACvC,IAAA,EAAM,EAAE,UAAA,EAAY,IAAA,EAAK;AAAA,MACzB,IAAA,EAAM,EAAE,UAAA,EAAY,IAAA,EAAK;AAAA,MACzB,KAAA,EAAO,EAAE,UAAA,EAAY,IAAA;AAAK,KAC3B,CAAA;AAGM,IAAM,IAAA,GAAO,KAAA;AACpB,IAAO,kBAAA,GAAQ,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzPf,IAAA,aAAA,EAAA,KAAA,EAAAd,GAAAA,EAEM,OA6CO,IAAA,EACN,YAAA;AAhDP,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAAA,IAAA,eAAA,EAAA;AAEA,IAAM,KAAA,IAAQA,GAAAA,GAAA,cAAmB,kBAAA,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASpC,WAAA,CAAa,QAAA,EAAU,QAAA,EAAU,OAAA,GAAU,EAAC,EAAG;AAC7C,QAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,2DAAA,EAA8D,SAAA,CAAU,MAAM,CAAA,SAAA,CAAW,CAAA;AAAA,QAC/G;AACA,QAAA,KAAA,CAAM,UAAU,OAAO,CAAA;AAZzB,QAAA,YAAA,CAAA,IAAA,EAAA,aAAA,EAAgB,CAAA,CAAA;AAChB,QAAA,YAAA,CAAA,IAAA,EAAA,KAAA,EAAQ,EAAA,CAAA;AAaN,QAAA,IAAI,OAAA,KAAY,IAAA,EAAM,OAAA,GAAU,EAAC;AAGjC,QAAA,MAAM,YAAA,GAAe,QAAQ,YAAA,KAAiB,MAAA,GAAY,KAAK,GAAA,EAAI,GAAI,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAA;AAClG,QAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA,EAAG;AAC/B,UAAA,YAAA,CAAA,IAAA,EAAK,aAAA,EAAgB,YAAA,CAAA;AAAA,QACvB;AAEA,QAAA,YAAA,CAAA,IAAA,EAAK,KAAA,EAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,MAC9B;AAAA,MAEA,IAAI,IAAA,GAAQ;AACV,QAAA,OAAO,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAAA,MACd;AAAA,MAEA,IAAI,YAAA,GAAgB;AAClB,QAAA,OAAO,YAAA,CAAA,IAAA,EAAK,aAAA,CAAA;AAAA,MACd;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAK;AAC1B,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAEA,QAAQ,MAAA,CAAO,WAAW,CAAA,CAAG,MAAA,EAAQ;AACnC,QAAA,OAAO,CAAC,CAAC,MAAA,IAAU,MAAA,YAAkB,kBAAA,IACnC,WAAW,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,MAC9C;AAAA,KACF,EAzCE,+BACA,KAAA,GAAA,IAAA,OAAA,EAAA,EAFYA,GAAAA,CAAAA;AA6CP,IAAM,IAAA,GAAO,KAAA;AACpB,IAAO,YAAA,GAAQ,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfR,SAAS,cAAA,CAAgBC,EAAAA,EAAE,CAAA,GAAE,kBAAA,EAAE;AACtC,EAAA,IAAI,CAAA,GAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,MAAM,GAAG,CAAA,CAAE,QAAA,CAAS,EAAA,EAAI,GAAG,CAAA,EAAE,IAAE,EAAC,EAAE,CAAA,GAAE,CAAA,EAAA,EAAK,CAAC,CAAA;AAAA,sCAAA,CAAA;AAClF,EAAAA,EAAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAE,CAAA,KAAI,OAAO,CAAA,IAAG,QAAA,GAC1B,CAAA,CAAE,IAAA,CAAK,CAAA,GAAE,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA;AAAA;AAAA,EAAY,CAAA,CAAE,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAC,CAAA;AAAA,CAAM,CAAA,GACxE,CAAA,CAAE,IAAA,CAAK,CAAA,GAAE,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,aAAA,EAAgB,CAAA,CAAE,CAAA,CAAE,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,cAAA,EAAsB,CAAA,CAAE,QAAM,0BAA0B,CAAA;AAAA;AAAA,CAAA,EAAY,CAAA,EAAG,MAAM,CAAC,CAAA;AACzH,EAAA,CAAA,CAAE,IAAA,CAAK,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,CAAI,CAAA;AACjB,EAAA,OAAO,IAAI,CAAA,CAAE,CAAA,EAAE,EAAC,IAAA,EAAK,gCAAA,GAAiC,GAAE,CAAA;AAAC;AAvCzD,IAKiB,CAAA,EAAW,GAAc,CAAA,EAC1C,CAAA,EACA,GACA,CAAA,EACA,CAAA,EACA,CAAA,EAVA,EAAA,EAAAD,GAAAA,EAea,QAAA;AAfb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2CAAA,GAAA;AAEA,IAAA,eAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAEA,IAAA,CAAI,EAAC,WAAA,EAAY,CAAA,EAAE,QAAA,EAAS,CAAA,EAAE,aAAY,CAAA,EAAA,GAAG,MAAA;AAA7C,IACA,IAAE,IAAA,CAAK,MAAA;AADP,IAEA,CAAA,GAAE,sEAAA,CAAuE,KAAA,CAAM,GAAG,CAAA;AAFlF,IAGA,CAAA,GAAE,CAAC,CAAA,EAAE,CAAA,EAAE,OAAK,CAAA,IAAG,EAAA,EAAG,eAAA,CAAgB,IAAA,CAAK,CAAA,IAAK,CAAA,CAAE,CAAC,CAAC,CAAA,GAAE,EAAE,CAAA,GAAE,CAAA,KAAI,SAAO,CAAA,GAAE,EAAA,GAAG,CAAA,CAAE,CAAC,CAAA,IAAG,MAAA,GAAO,EAAE,IAAA,GAAK,MAAA,EAAO,IAAG,CAAA,CAAE,IAAA,KAAO,KAAG,CAAA,CAAE,CAAC,CAAA,IAAG,MAAA,GAAO,IAAI,YAAA,CAAE,CAAC,CAAC,CAAA,EAAE,GAAE,CAAC,CAAA,GAAE,CAAC,CAAA,GAAE,CAAC,CAAA,EAAE,CAAA,GAAE,EAAE,CAAA,CAAA;AAHtJ,IAIA,CAAA,GAAE,CAAC,CAAA,EAAEe,EAAAA,KAAAA,CAAKA,KAAE,CAAA,GAAE,CAAA,CAAE,QAAQ,WAAA,EAAY,MAAM,GAAG,OAAA,CAAQ,KAAA,EAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,OAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAK,KAAK,CAAA;AAJzG,IAKA,CAAA,GAAE,CAAC,CAAA,EAAG,CAAA,EAAGb,EAAAA,KAAI;AAAC,MAAA,IAAG,CAAA,CAAE,SAAOA,EAAAA,EAAE;AAAC,QAAA,MAAM,IAAI,UAAU,CAAA,mBAAA,EAAsB,CAAC,oBAAoBA,EAAC,CAAA,8BAAA,EAAiC,CAAA,CAAE,MAAM,CAAA,SAAA,CAAW,CAAA;AAAA,MAAC;AAAA,IAAC,CAAA;AAK5I,IAAM,QAAA,IAAWF,MAAA,MAAe;AAAA,MAEvC,eAAe,CAAA,EAAE;AADjB,QAAA,YAAA,CAAA,IAAA,EAAA,EAAA,EAAG,EAAC,CAAA;AACc,QAAA,IAAG,CAAA,CAAE,MAAA,EAAO,MAAM,IAAI,UAAU,CAAA,6EAAA,CAA+E,CAAA;AAAA,MAAC;AAAA,MAClI,KAAK,CAAC,CAAA,GAAI;AAAC,QAAA,OAAO,UAAA;AAAA,MAAU;AAAA,MAC5B,CAAC,CAAC,CAAA,GAAG;AAAC,QAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,MAAC;AAAA,MAC3B,QAAQ,CAAC,CAAA,CAAE,CAAA,EAAG;AAAC,QAAA,OAAO,KAAG,OAAO,CAAA,KAAI,QAAA,IAAU,CAAA,CAAE,CAAC,CAAA,KAAI,UAAA,IAAY,CAAC,CAAA,CAAE,KAAK,CAAAgB,EAAAA,KAAG,OAAO,CAAA,CAAEA,EAAC,KAAG,UAAU,CAAA;AAAA,MAAC;AAAA,MACpG,UAAU,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,QAAA,EAAS,WAAU,CAAC,CAAA;AAAE,QAAA,YAAA,CAAA,IAAA,EAAK,EAAA,CAAA,CAAG,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC,CAAC,CAAA;AAAA,MAAC;AAAA,MAC1D,OAAO,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,QAAA,EAAS,WAAU,CAAC,CAAA;AAAE,QAAA,CAAA,IAAG,EAAA;AAAG,QAAA,YAAA,CAAA,IAAA,EAAK,EAAA,EAAG,mBAAK,EAAA,CAAA,CAAG,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,KAAI,CAAA,KAAI,CAAC,CAAA,CAAA;AAAA,MAAC;AAAA,MAC5E,IAAI,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,KAAA,EAAM,WAAU,CAAC,CAAA;AAAE,QAAA,CAAA,IAAG,EAAA;AAAG,QAAA,KAAA,IAAQ,CAAA,GAAE,mBAAK,EAAA,CAAA,EAAG,CAAA,GAAE,EAAE,MAAA,EAAO,CAAA,GAAE,CAAA,EAAE,CAAA,GAAE,CAAA,EAAE,CAAA,EAAA,MAAO,CAAA,CAAE,CAAC,EAAE,CAAC,CAAA,KAAI,GAAE,OAAO,CAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA;AAAE,QAAA,OAAO,IAAA;AAAA,MAAI;AAAA,MACpH,MAAA,CAAO,GAAE,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,QAAA,EAAS,WAAU,CAAC,CAAA;AAAE,QAAA,CAAA,GAAE,EAAC;AAAE,QAAA,CAAA,IAAG,EAAA;AAAG,QAAA,YAAA,CAAA,IAAA,EAAK,EAAA,CAAA,CAAG,OAAA,CAAQ,CAAA,CAAA,KAAG,CAAA,CAAE,CAAC,CAAA,KAAI,CAAA,IAAG,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAE,QAAA,OAAO,CAAA;AAAA,MAAC;AAAA,MAClG,IAAI,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,KAAA,EAAM,WAAU,CAAC,CAAA;AAAE,QAAA,CAAA,IAAG,EAAA;AAAG,QAAA,OAAO,mBAAK,EAAA,CAAA,CAAG,IAAA,CAAK,OAAG,CAAA,CAAE,CAAC,MAAI,CAAC,CAAA;AAAA,MAAC;AAAA,MAClE,OAAA,CAAQ,GAAE,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,SAAA,EAAU,WAAU,CAAC,CAAA;AAAE,QAAA,KAAA,IAAQ,CAAC,CAAA,EAAE,CAAC,CAAA,IAAI,IAAA,IAAO,IAAA,CAAK,CAAA,EAAE,CAAA,EAAE,CAAA,EAAE,IAAI,CAAA;AAAA,MAAC;AAAA,MAC7E,OAAO,CAAA,EAAE;AAAC,QAAA,CAAA,CAAE,KAAA,EAAM,WAAU,CAAC,CAAA;AAAE,QAAA,IAAI,CAAA,GAAE,EAAC,EAAE,CAAA,GAAE,IAAA;AAAG,QAAA,CAAA,GAAE,CAAA,CAAE,GAAG,CAAC,CAAA;AAAE,QAAA,YAAA,CAAA,IAAA,EAAK,EAAA,CAAA,CAAG,QAAQ,CAAA,CAAA,KAAG;AAAC,UAAA,CAAA,CAAE,CAAC,CAAA,KAAI,CAAA,CAAE,CAAC,IAAE,CAAA,KAAI,CAAA,GAAE,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAA,GAAG,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,QAAC,CAAC,CAAA;AAAE,QAAA,CAAA,IAAG,CAAA,CAAE,KAAK,CAAC,CAAA;AAAE,QAAA,YAAA,CAAA,IAAA,EAAK,EAAA,EAAG,CAAA,CAAA;AAAA,MAAC;AAAA,MAC3I,CAAC,OAAA,GAAS;AAAC,QAAA,OAAM,YAAA,CAAA,IAAA,EAAK,EAAA,CAAA;AAAA,MAAE;AAAA,MACxB,CAAC,IAAA,GAAM;AAAC,QAAA,KAAA,IAAO,CAAC,CAAC,CAAA,IAAI,IAAA,EAAK,MAAM,CAAA;AAAA,MAAC;AAAA,MACjC,CAAC,MAAA,GAAQ;AAAC,QAAA,KAAA,IAAO,GAAE,CAAC,CAAA,IAAI,MAAK,MAAM,CAAA;AAAA,MAAC;AAAA,OAdpC,EAAA,GAAA,IAAA,OAAA,EAAA,EADwBhB,GAAAA,CAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfxB,IAAa,cAAA;AAAb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAAO,IAAM,cAAA,GAAN,cAA6B,KAAA,CAAM;AAAA,MACzC,WAAA,CAAY,SAAS,IAAA,EAAM;AAC1B,QAAA,KAAA,CAAM,OAAO,CAAA;AAEb,QAAA,KAAA,CAAM,iBAAA,CAAkB,IAAA,EAAM,IAAA,CAAK,WAAW,CAAA;AAE9C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,MACb;AAAA,MAEA,IAAI,IAAA,GAAO;AACV,QAAA,OAAO,KAAK,WAAA,CAAY,IAAA;AAAA,MACzB;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAI;AAC1B,QAAA,OAAO,KAAK,WAAA,CAAY,IAAA;AAAA,MACzB;AAAA,KACD;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBA,IAUa,UAAA;AAVb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mDAAA,GAAA;AACA,IAAA,SAAA,EAAA;AASO,IAAM,UAAA,GAAN,cAAyB,cAAA,CAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM9C,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa;AACvC,QAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AAEnB,QAAA,IAAI,WAAA,EAAa;AAEhB,UAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,WAAA,CAAY,IAAA;AACrC,UAAA,IAAA,CAAK,iBAAiB,WAAA,CAAY,OAAA;AAAA,QACnC;AAAA,MACD;AAAA,KACD;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBA,IAMM,IAAA,EAQO,qBAAA,EAmBA,MAAA,EAiBA,aAAA,EAiBA,mBAAA,EAcA,cAAA;AAjFb,IAAA,OAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yCAAA,GAAA;AAMA,IAAM,OAAO,MAAA,CAAO,WAAA;AAQb,IAAM,wBAAwB,CAAA,MAAA,KAAU;AAC9C,MAAA,OACC,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,OAAO,MAAA,KAAW,UAAA,IACzB,OAAO,MAAA,CAAO,MAAA,KAAW,UAAA,IACzB,OAAO,MAAA,CAAO,QAAQ,UAAA,IACtB,OAAO,MAAA,CAAO,MAAA,KAAW,UAAA,IACzB,OAAO,MAAA,CAAO,GAAA,KAAQ,cACtB,OAAO,MAAA,CAAO,GAAA,KAAQ,UAAA,IACtB,OAAO,MAAA,CAAO,IAAA,KAAS,UAAA,IACvB,MAAA,CAAO,IAAI,CAAA,KAAM,iBAAA;AAAA,IAEnB,CAAA;AAOO,IAAM,SAAS,CAAA,MAAA,KAAU;AAC/B,MAAA,OACC,MAAA,IACA,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,OAAO,WAAA,KAAgB,UAAA,IAC9B,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,IACvB,OAAO,MAAA,CAAO,MAAA,KAAW,UAAA,IACzB,OAAO,MAAA,CAAO,WAAA,KAAgB,cAC9B,eAAA,CAAgB,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IAEnC,CAAA;AAOO,IAAM,gBAAgB,CAAA,MAAA,KAAU;AACtC,MAAA,OACC,OAAO,WAAW,QAAA,KACjB,MAAA,CAAO,IAAI,CAAA,KAAM,aAAA,IACjB,MAAA,CAAO,IAAI,CAAA,KAAM,aAAA,CAAA;AAAA,IAGpB,CAAA;AAUO,IAAM,mBAAA,GAAsB,CAAC,WAAA,EAAa,QAAA,KAAa;AAC7D,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,QAAQ,CAAA,CAAE,QAAA;AAC/B,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,WAAW,CAAA,CAAE,QAAA;AAElC,MAAA,OAAO,SAAS,IAAA,IAAQ,IAAA,CAAK,QAAA,CAAS,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA;AAAA,IACjD,CAAA;AASO,IAAM,cAAA,GAAiB,CAAC,WAAA,EAAa,QAAA,KAAa;AACxD,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,QAAQ,CAAA,CAAE,QAAA;AAC/B,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,WAAW,CAAA,CAAE,QAAA;AAElC,MAAA,OAAO,IAAA,KAAS,IAAA;AAAA,IACjB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtFA,IAAA,yBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yCAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAI,CAAC,WAAW,YAAA,EAAc;AAC5B,MAAA,IAAI;AACF,QAAA,MAAM,EAAE,cAAA,EAAe,GAAI,SAAA,CAAQ,gBAAgB,CAAA,EACnD,IAAA,GAAO,IAAI,cAAA,EAAe,CAAE,KAAA,EAC5B,EAAA,GAAK,IAAI,WAAA,EAAY;AACrB,QAAA,IAAA,CAAK,WAAA,CAAY,EAAA,EAAI,CAAC,EAAA,EAAI,EAAE,CAAC,CAAA;AAAA,MAC/B,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,WAAA,CAAY,IAAA,KAAS,cAAA,KACvB,UAAA,CAAW,eAAe,GAAA,CAAI,WAAA,CAAA;AAAA,MAElC;AAAA,IACF;AAEA,IAAA,MAAA,CAAO,UAAU,UAAA,CAAW,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACf5B,IAEA,wBAAA,EAKQ,MAMF,YAAA,EAOA,QAAA,EAOA,UAMA,YAAA,EAGA,QAAA,EAQA,UA5CN,KAAA,EAAA,MAAA,EA0DM,aAAA,EAAA,YAAA;AA1DN,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAEA,IAAA,wBAAA,GAAyB,OAAA,CAAA,yBAAA,EAAA,CAAA;AAEzB,IAAA,SAAA,EAAA;AACA,IAAA,eAAA,EAAA;AAEA,IAAA,CAAM,EAAE,IAAA,EAAA,GAASiB,QAAA;AAMjB,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,IAAA,KAAS,SAAS,QAAA,CAAS,IAAI,CAAA,EAAG,IAAA,EAAM,IAAI,CAAA;AAOxE,IAAM,QAAA,GAAW,CAAC,IAAA,EAAM,IAAA,KAAS,KAAK,IAAI,CAAA,CAAE,IAAA,CAAK,CAAAC,KAAAA,KAAQ,QAAA,CAASA,KAAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAOnF,IAAM,QAAA,GAAW,CAAC,IAAA,EAAM,IAAA,KAAS,KAAK,IAAI,CAAA,CAAE,IAAA,CAAK,CAAAA,KAAAA,KAAQ,QAAA,CAASA,KAAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAMnF,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,IAAA,KAAS,SAAS,QAAA,CAAS,IAAI,CAAA,EAAG,IAAA,EAAM,IAAI,CAAA;AAGxE,IAAM,QAAA,GAAW,CAACA,KAAAA,EAAM,IAAA,EAAM,IAAA,GAAO,OAAO,IAAI,kBAAA,CAAK,CAAC,IAAI,YAAA,CAAa;AAAA,MACrE,IAAA;AAAA,MACA,MAAMA,KAAAA,CAAK,IAAA;AAAA,MACX,cAAcA,KAAAA,CAAK,OAAA;AAAA,MACnB,KAAA,EAAO;AAAA,KACR,CAAC,CAAA,EAAG,EAAE,MAAM,CAAA;AAGb,IAAM,QAAA,GAAW,CAACA,KAAAA,EAAM,IAAA,EAAM,IAAA,GAAO,OAAO,IAAI,YAAA,CAAK,CAAC,IAAI,YAAA,CAAa;AAAA,MACrE,IAAA;AAAA,MACA,MAAMA,KAAAA,CAAK,IAAA;AAAA,MACX,cAAcA,KAAAA,CAAK,OAAA;AAAA,MACnB,KAAA,EAAO;AAAA,KACR,CAAC,CAAA,EAAG,QAAA,CAAS,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,YAAA,EAAcA,KAAAA,CAAK,OAAA,EAAS,CAAA;AASzD,IAAM,aAAA,GAAN,MAAM,aAAA,CAAa;AAAA,MAIjB,YAAa,OAAA,EAAS;AAHtB,QAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AACA,QAAA,YAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,OAAA,CAAQ,IAAA,CAAA;AACrB,QAAA,YAAA,CAAA,IAAA,EAAK,QAAS,OAAA,CAAQ,KAAA,CAAA;AACtB,QAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA;AACpB,QAAA,IAAA,CAAK,eAAe,OAAA,CAAQ,YAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,KAAA,CAAO,OAAO,GAAA,EAAK;AACjB,QAAA,OAAO,IAAI,aAAA,CAAa;AAAA,UACtB,MAAM,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAAA,UACX,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB,MAAM,GAAA,GAAM,KAAA;AAAA,UACZ,KAAA,EAAO,mBAAK,MAAA,CAAA,GAAS;AAAA,SACtB,CAAA;AAAA,MACH;AAAA,MAEA,OAAQ,MAAA,GAAU;AAChB,QAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,mBAAK,KAAA,CAAK,CAAA;AACzC,QAAA,IAAI,OAAA,GAAU,KAAK,YAAA,EAAc;AAC/B,UAAA,MAAM,IAAI,wBAAA,CAAAV,OAAAA,CAAa,yIAAA,EAA2I,kBAAkB,CAAA;AAAA,QACtL;AACA,QAAA,OAAQ,gBAAA,CAAiB,mBAAK,KAAA,CAAA,EAAO;AAAA,UACnC,OAAO,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA;AAAA,UACZ,GAAA,EAAK,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,GAAS,IAAA,CAAK,IAAA,GAAO;AAAA,SAChC,CAAA;AAAA,MACH;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAK;AAC1B,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,KACF;AArCE,IAAA,KAAA,GAAA,IAAA,OAAA,EAAA;AACA,IAAA,MAAA,GAAA,IAAA,OAAA,EAAA;AAFF,IAAM,YAAA,GAAN,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1DA,IAAA,wBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,wBAAA,EAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AA+TA,SAAS,UAAU,WAAA,EAAa;AAE/B,EAAA,MAAMQ,EAAAA,GAAI,WAAA,CAAY,KAAA,CAAM,4DAA4D,CAAA;AACxF,EAAA,IAAI,CAACA,EAAAA,EAAG;AACP,IAAA;AAAA,EACD;AAEA,EAAA,MAAM,QAAQA,EAAAA,CAAE,CAAC,CAAA,IAAKA,EAAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AAC9B,EAAA,IAAI,WAAW,KAAA,CAAM,KAAA,CAAM,MAAM,WAAA,CAAY,IAAI,IAAI,CAAC,CAAA;AACtD,EAAA,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA;AACvC,EAAA,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,aAAA,EAAe,CAACA,IAAG,IAAA,KAAS;AACvD,IAAA,OAAO,MAAA,CAAO,aAAa,IAAI,CAAA;AAAA,EAChC,CAAC,CAAA;AACD,EAAA,OAAO,QAAA;AACR;AAEA,eAAsB,UAAA,CAAWG,OAAM,EAAA,EAAI;AAC1C,EAAA,IAAI,CAAC,YAAA,CAAa,IAAA,CAAK,EAAE,CAAA,EAAG;AAC3B,IAAA,MAAM,IAAI,UAAU,iBAAiB,CAAA;AAAA,EACtC;AAEA,EAAA,MAAMH,EAAAA,GAAI,EAAA,CAAG,KAAA,CAAM,iCAAiC,CAAA;AAEpD,EAAA,IAAI,CAACA,EAAAA,EAAG;AACP,IAAA,MAAM,IAAI,UAAU,sDAAsD,CAAA;AAAA,EAC3E;AAEA,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgBA,EAAAA,CAAE,CAAC,CAAA,IAAKA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAE/C,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,UAAA;AACJ,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,QAAA;AACJ,EAAA,MAAM,cAAc,EAAC;AACrB,EAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAE9B,EAAA,MAAM,aAAa,CAAA,IAAA,KAAQ;AAC1B,IAAA,UAAA,IAAc,QAAQ,MAAA,CAAO,IAAA,EAAM,EAAC,MAAA,EAAQ,MAAK,CAAA;AAAA,EAClD,CAAA;AAEA,EAAA,MAAM,eAAe,CAAA,IAAA,KAAQ;AAC5B,IAAA,WAAA,CAAY,KAAK,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,uBAAuB,MAAM;AAClC,IAAA,MAAM,IAAA,GAAO,IAAI,YAAA,CAAK,WAAA,EAAa,UAAU,EAAC,IAAA,EAAM,aAAY,CAAA;AAChE,IAAA,QAAA,CAAS,MAAA,CAAO,WAAW,IAAI,CAAA;AAAA,EAChC,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AACnC,IAAA,QAAA,CAAS,MAAA,CAAO,WAAW,UAAU,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,CAAY,OAAO,CAAA;AACvC,EAAA,OAAA,CAAQ,MAAA,EAAO;AAEf,EAAA,MAAA,CAAO,cAAc,WAAY;AAChC,IAAA,MAAA,CAAO,UAAA,GAAa,UAAA;AACpB,IAAA,MAAA,CAAO,SAAA,GAAY,qBAAA;AAEnB,IAAA,WAAA,GAAc,EAAA;AACd,IAAA,WAAA,GAAc,EAAA;AACd,IAAA,UAAA,GAAa,EAAA;AACb,IAAA,SAAA,GAAY,EAAA;AACZ,IAAA,WAAA,GAAc,EAAA;AACd,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,WAAA,CAAY,MAAA,GAAS,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAA,CAAO,aAAA,GAAgB,SAAU,IAAA,EAAM;AACtC,IAAA,WAAA,IAAe,QAAQ,MAAA,CAAO,IAAA,EAAM,EAAC,MAAA,EAAQ,MAAK,CAAA;AAAA,EACnD,CAAA;AAEA,EAAA,MAAA,CAAO,aAAA,GAAgB,SAAU,IAAA,EAAM;AACtC,IAAA,WAAA,IAAe,QAAQ,MAAA,CAAO,IAAA,EAAM,EAAC,MAAA,EAAQ,MAAK,CAAA;AAAA,EACnD,CAAA;AAEA,EAAA,MAAA,CAAO,cAAc,WAAY;AAChC,IAAA,WAAA,IAAe,QAAQ,MAAA,EAAO;AAC9B,IAAA,WAAA,GAAc,YAAY,WAAA,EAAY;AAEtC,IAAA,IAAI,gBAAgB,qBAAA,EAAuB;AAE1C,MAAA,MAAMA,EAAAA,GAAI,WAAA,CAAY,KAAA,CAAM,mDAAmD,CAAA;AAE/E,MAAA,IAAIA,EAAAA,EAAG;AACN,QAAA,SAAA,GAAYA,EAAAA,CAAE,CAAC,CAAA,IAAKA,EAAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AAAA,MAC7B;AAEA,MAAA,QAAA,GAAW,UAAU,WAAW,CAAA;AAEhC,MAAA,IAAI,QAAA,EAAU;AACb,QAAA,MAAA,CAAO,UAAA,GAAa,YAAA;AACpB,QAAA,MAAA,CAAO,SAAA,GAAY,oBAAA;AAAA,MACpB;AAAA,IACD,CAAA,MAAA,IAAW,gBAAgB,cAAA,EAAgB;AAC1C,MAAA,WAAA,GAAc,WAAA;AAAA,IACf;AAEA,IAAA,WAAA,GAAc,EAAA;AACd,IAAA,WAAA,GAAc,EAAA;AAAA,EACf,CAAA;AAEA,EAAA,WAAA,MAAiB,SAASG,KAAAA,EAAM;AAC/B,IAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAAA,EACnB;AAEA,EAAA,MAAA,CAAO,GAAA,EAAI;AAEX,EAAA,OAAO,QAAA;AACR;AA/aA,IAGI,CAAA,EACE,CAAA,EAaFJ,EAAAA,EACE,CAAA,EAKA,EAAA,EACA,EAAA,EACA,KAAA,EACA,MAAA,EACA,KAAA,EACA,CAAA,EACA,CAAA,EAEA,KAAA,EAEA,IAAA,EAEA,eAAA;AAnCN,IAAA,qBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uDAAA,GAAA;AAAA,IAAA,SAAA,EAAA;AACA,IAAA,YAAA,EAAA;AAEA,IAAI,CAAA,GAAI,CAAA;AACR,IAAM,CAAA,GAAI;AAAA,MACT,cAAA,EAAgB,CAAA,EAAA;AAAA,MAChB,kBAAA,EAAoB,CAAA,EAAA;AAAA,MACpB,YAAA,EAAc,CAAA,EAAA;AAAA,MACd,kBAAA,EAAoB,CAAA,EAAA;AAAA,MACpB,YAAA,EAAc,CAAA,EAAA;AAAA,MACd,wBAAA,EAA0B,CAAA,EAAA;AAAA,MAC1B,mBAAA,EAAqB,CAAA,EAAA;AAAA,MACrB,eAAA,EAAiB,CAAA,EAAA;AAAA,MACjB,SAAA,EAAW,CAAA,EAAA;AAAA,MACX,GAAA,EAAK,CAAA;AAAA,KACN;AAEA,IAAIA,EAAAA,GAAI,CAAA;AACR,IAAM,CAAA,GAAI;AAAA,MACT,aAAA,EAAeA,EAAAA;AAAA,MACf,eAAeA,EAAAA,IAAK;AAAA,KACrB;AAEA,IAAM,EAAA,GAAK,EAAA;AACX,IAAM,EAAA,GAAK,EAAA;AACX,IAAM,KAAA,GAAQ,EAAA;AACd,IAAM,MAAA,GAAS,EAAA;AACf,IAAM,KAAA,GAAQ,EAAA;AACd,IAAM,CAAA,GAAI,EAAA;AACV,IAAM,CAAA,GAAI,GAAA;AAEV,IAAM,KAAA,GAAQ,OAAK,CAAA,GAAI,EAAA;AAEvB,IAAM,OAAO,MAAM;AAAA,IAAC,CAAA;AAEpB,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA,MAIrB,YAAY,QAAA,EAAU;AACrB,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AAEb,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AACrB,QAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AACrB,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAEjB,QAAA,IAAA,CAAK,gBAAgB,EAAC;AAEtB,QAAA,QAAA,GAAW,QAAA,GAAW,QAAA;AACtB,QAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,QAAA,CAAS,MAAM,CAAA;AAC3C,QAAA,KAAA,IAASlB,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,QAAA,CAAS,QAAQA,EAAAA,EAAAA,EAAK;AACzC,UAAA,IAAA,CAAKA,EAAC,CAAA,GAAI,QAAA,CAAS,UAAA,CAAWA,EAAC,CAAA;AAC/B,UAAA,IAAA,CAAK,aAAA,CAAc,IAAA,CAAKA,EAAC,CAAC,CAAA,GAAI,IAAA;AAAA,QAC/B;AAEA,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,aAAa,IAAI,UAAA,CAAW,IAAA,CAAK,QAAA,CAAS,SAAS,CAAC,CAAA;AACzD,QAAA,IAAA,CAAK,QAAQ,CAAA,CAAE,cAAA;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,IAAA,EAAM;AACX,QAAA,IAAIA,EAAAA,GAAI,CAAA;AACR,QAAA,MAAM,UAAU,IAAA,CAAK,MAAA;AACrB,QAAA,IAAI,gBAAgB,IAAA,CAAK,KAAA;AACzB,QAAA,IAAI,EAAC,UAAA,EAAY,QAAA,EAAU,eAAe,KAAA,EAAO,KAAA,EAAO,OAAK,GAAI,IAAA;AACjE,QAAA,MAAM,cAAA,GAAiB,KAAK,QAAA,CAAS,MAAA;AACrC,QAAA,MAAM,cAAc,cAAA,GAAiB,CAAA;AACrC,QAAA,MAAM,eAAe,IAAA,CAAK,MAAA;AAC1B,QAAA,IAAI,CAAA;AACJ,QAAA,IAAI,EAAA;AAEJ,QAAA,MAAM,OAAO,CAAA,IAAA,KAAQ;AACpB,UAAA,IAAA,CAAK,IAAA,GAAO,MAAM,CAAA,GAAIA,EAAAA;AAAA,QACvB,CAAA;AAEA,QAAA,MAAM,QAAQ,CAAA,IAAA,KAAQ;AACrB,UAAA,OAAO,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,QAC1B,CAAA;AAEA,QAAA,MAAM,QAAA,GAAW,CAAC,cAAA,EAAgB,KAAA,EAAO,KAAK,IAAA,KAAS;AACtD,UAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,GAAA,EAAK;AACzC,YAAA,IAAA,CAAK,cAAc,CAAA,CAAE,IAAA,IAAQ,KAAK,QAAA,CAAS,KAAA,EAAO,GAAG,CAAC,CAAA;AAAA,UACvD;AAAA,QACD,CAAA;AAEA,QAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAMuB,MAAAA,KAAU;AACrC,UAAA,MAAM,aAAa,IAAA,GAAO,MAAA;AAC1B,UAAA,IAAI,EAAE,cAAc,IAAA,CAAA,EAAO;AAC1B,YAAA;AAAA,UACD;AAEA,UAAA,IAAIA,MAAAA,EAAO;AACV,YAAA,QAAA,CAAS,IAAA,EAAM,IAAA,CAAK,UAAU,CAAA,EAAGvB,IAAG,IAAI,CAAA;AACxC,YAAA,OAAO,KAAK,UAAU,CAAA;AAAA,UACvB,CAAA,MAAO;AACN,YAAA,QAAA,CAAS,MAAM,IAAA,CAAK,UAAU,CAAA,EAAG,IAAA,CAAK,QAAQ,IAAI,CAAA;AAClD,YAAA,IAAA,CAAK,UAAU,CAAA,GAAI,CAAA;AAAA,UACpB;AAAA,QACD,CAAA;AAEA,QAAA,KAAKA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,OAAA,EAASA,EAAAA,EAAAA,EAAK;AAC7B,UAAA,CAAA,GAAI,KAAKA,EAAC,CAAA;AAEV,UAAA,QAAQ,KAAA;AAAO,YACd,KAAK,CAAA,CAAE,cAAA;AACN,cAAA,IAAI,KAAA,KAAU,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAClC,gBAAA,IAAI,MAAM,MAAA,EAAQ;AACjB,kBAAA,KAAA,IAAS,CAAA,CAAE,aAAA;AAAA,gBACZ,CAAA,MAAA,IAAW,MAAM,EAAA,EAAI;AACpB,kBAAA;AAAA,gBACD;AAEA,gBAAA,KAAA,EAAA;AACA,gBAAA;AAAA,cACD,CAAA,MAAA,IAAW,KAAA,GAAQ,CAAA,KAAM,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,gBAAA,IAAI,KAAA,GAAQ,CAAA,CAAE,aAAA,IAAiB,CAAA,KAAM,MAAA,EAAQ;AAC5C,kBAAA,KAAA,GAAQ,CAAA,CAAE,GAAA;AACV,kBAAA,KAAA,GAAQ,CAAA;AAAA,gBACT,WAAW,EAAE,KAAA,GAAQ,CAAA,CAAE,aAAA,CAAA,IAAkB,MAAM,EAAA,EAAI;AAClD,kBAAA,KAAA,GAAQ,CAAA;AACR,kBAAA,QAAA,CAAS,aAAa,CAAA;AACtB,kBAAA,KAAA,GAAQ,CAAA,CAAE,kBAAA;AAAA,gBACX,CAAA,MAAO;AACN,kBAAA;AAAA,gBACD;AAEA,gBAAA;AAAA,cACD;AAEA,cAAA,IAAI,CAAA,KAAM,QAAA,CAAS,KAAA,GAAQ,CAAC,CAAA,EAAG;AAC9B,gBAAA,KAAA,GAAQ,EAAA;AAAA,cACT;AAEA,cAAA,IAAI,CAAA,KAAM,QAAA,CAAS,KAAA,GAAQ,CAAC,CAAA,EAAG;AAC9B,gBAAA,KAAA,EAAA;AAAA,cACD;AAEA,cAAA;AAAA,YACD,KAAK,CAAA,CAAE,kBAAA;AACN,cAAA,KAAA,GAAQ,CAAA,CAAE,YAAA;AACV,cAAA,IAAA,CAAK,eAAe,CAAA;AACpB,cAAA,KAAA,GAAQ,CAAA;AAAA;AAAA,YAET,KAAK,CAAA,CAAE,YAAA;AACN,cAAA,IAAI,MAAM,EAAA,EAAI;AACb,gBAAA,KAAA,CAAM,eAAe,CAAA;AACrB,gBAAA,KAAA,GAAQ,CAAA,CAAE,mBAAA;AACV,gBAAA;AAAA,cACD;AAEA,cAAA,KAAA,EAAA;AACA,cAAA,IAAI,MAAM,MAAA,EAAQ;AACjB,gBAAA;AAAA,cACD;AAEA,cAAA,IAAI,MAAM,KAAA,EAAO;AAChB,gBAAA,IAAI,UAAU,CAAA,EAAG;AAEhB,kBAAA;AAAA,gBACD;AAEA,gBAAA,YAAA,CAAa,iBAAiB,IAAI,CAAA;AAClC,gBAAA,KAAA,GAAQ,CAAA,CAAE,kBAAA;AACV,gBAAA;AAAA,cACD;AAEA,cAAA,EAAA,GAAK,MAAM,CAAC,CAAA;AACZ,cAAA,IAAI,EAAA,GAAK,CAAA,IAAK,EAAA,GAAK,CAAA,EAAG;AACrB,gBAAA;AAAA,cACD;AAEA,cAAA;AAAA,YACD,KAAK,CAAA,CAAE,kBAAA;AACN,cAAA,IAAI,MAAM,KAAA,EAAO;AAChB,gBAAA;AAAA,cACD;AAEA,cAAA,IAAA,CAAK,eAAe,CAAA;AACpB,cAAA,KAAA,GAAQ,CAAA,CAAE,YAAA;AAAA;AAAA,YAEX,KAAK,CAAA,CAAE,YAAA;AACN,cAAA,IAAI,MAAM,EAAA,EAAI;AACb,gBAAA,YAAA,CAAa,iBAAiB,IAAI,CAAA;AAClC,gBAAA,QAAA,CAAS,aAAa,CAAA;AACtB,gBAAA,KAAA,GAAQ,CAAA,CAAE,wBAAA;AAAA,cACX;AAEA,cAAA;AAAA,YACD,KAAK,CAAA,CAAE,wBAAA;AACN,cAAA,IAAI,MAAM,EAAA,EAAI;AACb,gBAAA;AAAA,cACD;AAEA,cAAA,KAAA,GAAQ,CAAA,CAAE,kBAAA;AACV,cAAA;AAAA,YACD,KAAK,CAAA,CAAE,mBAAA;AACN,cAAA,IAAI,MAAM,EAAA,EAAI;AACb,gBAAA;AAAA,cACD;AAEA,cAAA,QAAA,CAAS,cAAc,CAAA;AACvB,cAAA,KAAA,GAAQ,CAAA,CAAE,eAAA;AACV,cAAA;AAAA,YACD,KAAK,CAAA,CAAE,eAAA;AACN,cAAA,KAAA,GAAQ,CAAA,CAAE,SAAA;AACV,cAAA,IAAA,CAAK,YAAY,CAAA;AAAA;AAAA,YAElB,KAAK,CAAA,CAAE,SAAA;AACN,cAAA,aAAA,GAAgB,KAAA;AAEhB,cAAA,IAAI,UAAU,CAAA,EAAG;AAEhB,gBAAAA,EAAAA,IAAK,WAAA;AACL,gBAAA,OAAOA,KAAI,YAAA,IAAgB,EAAE,IAAA,CAAKA,EAAC,KAAK,aAAA,CAAA,EAAgB;AACvD,kBAAAA,EAAAA,IAAK,cAAA;AAAA,gBACN;AAEA,gBAAAA,EAAAA,IAAK,WAAA;AACL,gBAAA,CAAA,GAAI,KAAKA,EAAC,CAAA;AAAA,cACX;AAEA,cAAA,IAAI,KAAA,GAAQ,SAAS,MAAA,EAAQ;AAC5B,gBAAA,IAAI,QAAA,CAAS,KAAK,CAAA,KAAM,CAAA,EAAG;AAC1B,kBAAA,IAAI,UAAU,CAAA,EAAG;AAChB,oBAAA,YAAA,CAAa,cAAc,IAAI,CAAA;AAAA,kBAChC;AAEA,kBAAA,KAAA,EAAA;AAAA,gBACD,CAAA,MAAO;AACN,kBAAA,KAAA,GAAQ,CAAA;AAAA,gBACT;AAAA,cACD,CAAA,MAAA,IAAW,KAAA,KAAU,QAAA,CAAS,MAAA,EAAQ;AACrC,gBAAA,KAAA,EAAA;AACA,gBAAA,IAAI,MAAM,EAAA,EAAI;AAEb,kBAAA,KAAA,IAAS,CAAA,CAAE,aAAA;AAAA,gBACZ,CAAA,MAAA,IAAW,MAAM,MAAA,EAAQ;AAExB,kBAAA,KAAA,IAAS,CAAA,CAAE,aAAA;AAAA,gBACZ,CAAA,MAAO;AACN,kBAAA,KAAA,GAAQ,CAAA;AAAA,gBACT;AAAA,cACD,CAAA,MAAA,IAAW,KAAA,GAAQ,CAAA,KAAM,QAAA,CAAS,MAAA,EAAQ;AACzC,gBAAA,IAAI,KAAA,GAAQ,EAAE,aAAA,EAAe;AAC5B,kBAAA,KAAA,GAAQ,CAAA;AACR,kBAAA,IAAI,MAAM,EAAA,EAAI;AAEb,oBAAA,KAAA,IAAS,CAAC,CAAA,CAAE,aAAA;AACZ,oBAAA,QAAA,CAAS,WAAW,CAAA;AACpB,oBAAA,QAAA,CAAS,aAAa,CAAA;AACtB,oBAAA,KAAA,GAAQ,CAAA,CAAE,kBAAA;AACV,oBAAA;AAAA,kBACD;AAAA,gBACD,CAAA,MAAA,IAAW,KAAA,GAAQ,CAAA,CAAE,aAAA,EAAe;AACnC,kBAAA,IAAI,MAAM,MAAA,EAAQ;AACjB,oBAAA,QAAA,CAAS,WAAW,CAAA;AACpB,oBAAA,KAAA,GAAQ,CAAA,CAAE,GAAA;AACV,oBAAA,KAAA,GAAQ,CAAA;AAAA,kBACT,CAAA,MAAO;AACN,oBAAA,KAAA,GAAQ,CAAA;AAAA,kBACT;AAAA,gBACD,CAAA,MAAO;AACN,kBAAA,KAAA,GAAQ,CAAA;AAAA,gBACT;AAAA,cACD;AAEA,cAAA,IAAI,QAAQ,CAAA,EAAG;AAGd,gBAAA,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAA,GAAI,CAAA;AAAA,cACzB,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAG7B,gBAAA,MAAM,WAAA,GAAc,IAAI,UAAA,CAAW,UAAA,CAAW,QAAQ,UAAA,CAAW,UAAA,EAAY,WAAW,UAAU,CAAA;AAClG,gBAAA,QAAA,CAAS,YAAA,EAAc,CAAA,EAAG,aAAA,EAAe,WAAW,CAAA;AACpD,gBAAA,aAAA,GAAgB,CAAA;AAChB,gBAAA,IAAA,CAAK,YAAY,CAAA;AAIjB,gBAAAA,EAAAA,EAAAA;AAAA,cACD;AAEA,cAAA;AAAA,YACD,KAAK,CAAA,CAAE,GAAA;AACN,cAAA;AAAA,YACD;AACC,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,KAAK,CAAA,CAAE,CAAA;AAAA;AACtD,QACD;AAEA,QAAA,YAAA,CAAa,eAAe,CAAA;AAC5B,QAAA,YAAA,CAAa,eAAe,CAAA;AAC5B,QAAA,YAAA,CAAa,YAAY,CAAA;AAGzB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACd;AAAA,MAEA,GAAA,GAAM;AACL,QAAA,IAAK,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,kBAAA,IAAsB,KAAK,KAAA,KAAU,CAAA,IACzD,IAAA,CAAK,KAAA,KAAU,EAAE,SAAA,IAAa,IAAA,CAAK,KAAA,KAAU,IAAA,CAAK,SAAS,MAAA,EAAS;AACrE,UAAA,IAAA,CAAK,SAAA,EAAU;AAAA,QAChB,CAAA,MAAA,IAAW,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,GAAA,EAAK;AAChC,UAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,QACnE;AAAA,MACD;AAAA,KACD;AAAA,EAAA;AAAA,CAAA,CAAA;AC5HA,eAAe,YAAY,IAAA,EAAM;AAChC,EAAA,IAAI,IAAA,CAAK,SAAS,CAAA,CAAE,SAAA,EAAW;AAC9B,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,IAAA,CAAK,GAAG,CAAA,CAAE,CAAA;AAAA,EACzD;AAEA,EAAA,IAAA,CAAK,SAAS,EAAE,SAAA,GAAY,IAAA;AAE5B,EAAA,IAAI,IAAA,CAAK,SAAS,CAAA,CAAE,KAAA,EAAO;AAC1B,IAAA,MAAM,IAAA,CAAK,SAAS,CAAA,CAAE,KAAA;AAAA,EACvB;AAEA,EAAA,MAAM,EAAC,MAAI,GAAI,IAAA;AAGf,EAAA,IAAI,SAAS,IAAA,EAAM;AAClB,IAAA,OAAOwB,QAAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EACtB;AAGA,EAAA,IAAI,EAAE,gBAAgB,MAAA,CAAA,EAAS;AAC9B,IAAA,OAAOA,QAAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EACtB;AAIA,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,EAAA,IAAI;AACH,IAAA,WAAA,MAAiB,SAAS,IAAA,EAAM;AAC/B,MAAA,IAAI,KAAK,IAAA,GAAO,CAAA,IAAK,aAAa,KAAA,CAAM,MAAA,GAAS,KAAK,IAAA,EAAM;AAC3D,QAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,CAAA,gBAAA,EAAmB,IAAA,CAAK,GAAG,CAAA,aAAA,EAAgB,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA;AAC/F,QAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAClB,QAAA,MAAM,KAAA;AAAA,MACP;AAEA,MAAA,UAAA,IAAc,KAAA,CAAM,MAAA;AACpB,MAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,IACjB;AAAA,EACD,SAAS,KAAA,EAAO;AACf,IAAA,MAAM,MAAA,GAAS,KAAA,YAAiB,cAAA,GAAiB,KAAA,GAAQ,IAAI,UAAA,CAAW,CAAA,4CAAA,EAA+C,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,UAAU,KAAK,CAAA;AACpK,IAAA,MAAM,MAAA;AAAA,EACP;AAEA,EAAA,IAAI,KAAK,aAAA,KAAkB,IAAA,IAAQ,IAAA,CAAK,cAAA,CAAe,UAAU,IAAA,EAAM;AACtE,IAAA,IAAI;AACH,MAAA,IAAI,MAAM,KAAA,CAAM,CAAA,CAAA,KAAK,OAAO,CAAA,KAAM,QAAQ,CAAA,EAAG;AAC5C,QAAA,OAAOA,QAAAA,CAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,MAClC;AAEA,MAAA,OAAOA,QAAAA,CAAO,MAAA,CAAO,KAAA,EAAO,UAAU,CAAA;AAAA,IACvC,SAAS,KAAA,EAAO;AACf,MAAA,MAAM,IAAI,UAAA,CAAW,CAAA,+CAAA,EAAkD,IAAA,CAAK,GAAG,KAAK,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,QAAA,EAAU,KAAK,CAAA;AAAA,IACrH;AAAA,EACD,CAAA,MAAO;AACN,IAAA,MAAM,IAAI,UAAA,CAAW,CAAA,yDAAA,EAA4D,IAAA,CAAK,GAAG,CAAA,CAAE,CAAA;AAAA,EAC5F;AACD;AA1PA,IAkBM,UACA,SAAA,EAWe,IAAA,EAqOR,KAAA,EA0BP,0BAAA,EAgBO,oBAqDA,aAAA,EAkCA,aAAA;AApYb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAWA,IAAA,eAAA,EAAA;AACA,IAAA,YAAA,EAAA;AAEA,IAAA,gBAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,OAAA,EAAA;AAEA,IAAM,QAAA,GAAW,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AAC1C,IAAM,SAAA,GAAY,OAAO,gBAAgB,CAAA;AAWzC,IAAqB,OAArB,MAA0B;AAAA,MACzB,YAAY,IAAA,EAAM;AAAA,QACjB,IAAA,GAAO;AAAA,OACR,GAAI,EAAC,EAAG;AACP,QAAA,IAAI,QAAA,GAAW,IAAA;AAEf,QAAA,IAAI,SAAS,IAAA,EAAM;AAElB,UAAA,IAAA,GAAO,IAAA;AAAA,QACR,CAAA,MAAA,IAAW,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAEvC,UAAA,IAAA,GAAOA,QAAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,CAAA;AAAA,QACnC,CAAA,MAAA,IAAW,MAAA,CAAO,IAAI,CAAA,EAAG,CAEzB,MAAA,IAAWA,QAAAA,CAAO,QAAA,CAAS,IAAI,CAAA,EAAG,CAElC,MAAA,IAAW,KAAA,CAAM,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAExC,UAAA,IAAA,GAAOA,QAAAA,CAAO,KAAK,IAAI,CAAA;AAAA,QACxB,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAG;AAEpC,UAAA,IAAA,GAAOA,SAAO,IAAA,CAAK,IAAA,CAAK,QAAQ,IAAA,CAAK,UAAA,EAAY,KAAK,UAAU,CAAA;AAAA,QACjE,CAAA,MAAA,IAAW,gBAAgB,MAAA,EAAQ,CAEnC,MAAA,IAAW,gBAAgB,QAAA,EAAU;AAEpC,UAAA,IAAA,GAAO,eAAe,IAAI,CAAA;AAC1B,UAAA,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,QAClC,CAAA,MAAO;AAGN,UAAA,IAAA,GAAOA,QAAAA,CAAO,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,QAChC;AAEA,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,IAAIA,QAAAA,CAAO,QAAA,CAAS,IAAI,CAAA,EAAG;AAC1B,UAAA,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAAA,QACnC,CAAA,MAAA,IAAW,MAAA,CAAO,IAAI,CAAA,EAAG;AACxB,UAAA,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC5C;AAEA,QAAA,IAAA,CAAK,SAAS,CAAA,GAAI;AAAA,UACjB,IAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,KAAA;AAAA,UACX,KAAA,EAAO;AAAA,SACR;AACA,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAEZ,QAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC3B,UAAA,IAAA,CAAK,EAAA,CAAG,SAAS,CAAA,MAAA,KAAU;AAC1B,YAAA,MAAM,KAAA,GAAQ,MAAA,YAAkB,cAAA,GAC/B,MAAA,GACA,IAAI,UAAA,CAAW,CAAA,4CAAA,EAA+C,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,MAAA,CAAO,OAAO,CAAA,CAAA,EAAI,UAAU,MAAM,CAAA;AAC9G,YAAA,IAAA,CAAK,SAAS,EAAE,KAAA,GAAQ,KAAA;AAAA,UACzB,CAAC,CAAA;AAAA,QACF;AAAA,MACD;AAAA,MAEA,IAAI,IAAA,GAAO;AACV,QAAA,OAAO,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA;AAAA,MACxB;AAAA,MAEA,IAAI,QAAA,GAAW;AACd,QAAA,OAAO,IAAA,CAAK,SAAS,CAAA,CAAE,SAAA;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,WAAA,GAAc;AACnB,QAAA,MAAM,EAAC,MAAA,EAAQ,UAAA,EAAY,YAAU,GAAI,MAAM,YAAY,IAAI,CAAA;AAC/D,QAAA,OAAO,MAAA,CAAO,KAAA,CAAM,UAAA,EAAY,UAAA,GAAa,UAAU,CAAA;AAAA,MACxD;AAAA,MAEA,MAAM,QAAA,GAAW;AAChB,QAAA,MAAM,EAAA,GAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AAE1C,QAAA,IAAI,EAAA,CAAG,UAAA,CAAW,mCAAmC,CAAA,EAAG;AACvD,UAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,UAAA,MAAM,aAAa,IAAI,eAAA,CAAgB,MAAM,IAAA,CAAK,MAAM,CAAA;AAExD,UAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,CAAA,IAAK,UAAA,EAAY;AACvC,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,KAAK,CAAA;AAAA,UAC5B;AAEA,UAAA,OAAO,QAAA;AAAA,QACR;AAEA,QAAA,MAAM,EAAC,UAAA,EAAAC,WAAAA,EAAU,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,qBAAA,EAAA,EAAA,wBAAA,CAAA,CAAA;AAC3B,QAAA,OAAOA,WAAAA,CAAW,IAAA,CAAK,IAAA,EAAM,EAAE,CAAA;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAA,GAAO;AACZ,QAAA,MAAM,KAAM,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,CAAQ,IAAI,cAAc,CAAA,IAAO,IAAA,CAAK,SAAS,EAAE,IAAA,IAAQ,IAAA,CAAK,SAAS,CAAA,CAAE,KAAK,IAAA,IAAS,EAAA;AACxH,QAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,WAAA,EAAY;AAEnC,QAAA,OAAO,IAAI,kBAAA,CAAK,CAAC,GAAG,CAAA,EAAG;AAAA,UACtB,IAAA,EAAM;AAAA,SACN,CAAA;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAA,GAAO;AACZ,QAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,EAAK;AAC7B,QAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAA,GAAO;AACZ,QAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AACrC,QAAA,OAAO,IAAI,WAAA,EAAY,CAAE,MAAA,CAAO,MAAM,CAAA;AAAA,MACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAA,GAAS;AACR,QAAA,OAAO,YAAY,IAAI,CAAA;AAAA,MACxB;AAAA,KACD;AAEA,IAAA,IAAA,CAAK,UAAU,MAAA,GAAS,SAAA,CAAU,KAAK,SAAA,CAAU,MAAA,EAAQ,sEAA0E,mBAAmB,CAAA;AAGtJ,IAAA,MAAA,CAAO,gBAAA,CAAiB,KAAK,SAAA,EAAW;AAAA,MACvC,IAAA,EAAM,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACvB,QAAA,EAAU,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC3B,WAAA,EAAa,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC9B,IAAA,EAAM,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACvB,IAAA,EAAM,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACvB,IAAA,EAAM,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACvB,IAAA,EAAM,EAAC,GAAA,EAAK,SAAA;AAAA,QAAU,MAAM;AAAA,QAAC,CAAA;AAAA,QAC5B,wEAAA;AAAA,QACA;AAAA,OAAiE;AAAC,KACnE,CAAA;AA2EM,IAAM,KAAA,GAAQ,CAAC,QAAA,EAAU,aAAA,KAAkB;AACjD,MAAA,IAAI,EAAA;AACJ,MAAA,IAAI,EAAA;AACJ,MAAA,IAAI,EAAC,IAAA,EAAI,GAAI,QAAA,CAAS,SAAS,CAAA;AAG/B,MAAA,IAAI,SAAS,QAAA,EAAU;AACtB,QAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,MACrD;AAIA,MAAA,IAAK,IAAA,YAAgB,MAAA,IAAY,OAAO,IAAA,CAAK,gBAAgB,UAAA,EAAa;AAEzE,QAAA,EAAA,GAAK,IAAI,WAAA,CAAY,EAAC,aAAA,EAAc,CAAA;AACpC,QAAA,EAAA,GAAK,IAAI,WAAA,CAAY,EAAC,aAAA,EAAc,CAAA;AACpC,QAAA,IAAA,CAAK,KAAK,EAAE,CAAA;AACZ,QAAA,IAAA,CAAK,KAAK,EAAE,CAAA;AAEZ,QAAA,QAAA,CAAS,SAAS,EAAE,MAAA,GAAS,EAAA;AAC7B,QAAA,IAAA,GAAO,EAAA;AAAA,MACR;AAEA,MAAA,OAAO,IAAA;AAAA,IACR,CAAA;AAEA,IAAM,0BAAA,GAA6B,SAAA;AAAA,MAClC,CAAA,IAAA,KAAQ,KAAK,WAAA,EAAY;AAAA,MACzB,2FAAA;AAAA,MACA;AAAA,KACD;AAYO,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAM,OAAA,KAAY;AAEpD,MAAA,IAAI,SAAS,IAAA,EAAM;AAClB,QAAA,OAAO,IAAA;AAAA,MACR;AAGA,MAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC7B,QAAA,OAAO,0BAAA;AAAA,MACR;AAGA,MAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAChC,QAAA,OAAO,iDAAA;AAAA,MACR;AAGA,MAAA,IAAI,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAK,IAAA,IAAQ,IAAA;AAAA,MACrB;AAGA,MAAA,IAAID,QAAAA,CAAO,QAAA,CAAS,IAAI,CAAA,IAAK,KAAA,CAAM,gBAAA,CAAiB,IAAI,CAAA,IAAK,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAG;AACtF,QAAA,OAAO,IAAA;AAAA,MACR;AAEA,MAAA,IAAI,gBAAgB,QAAA,EAAU;AAC7B,QAAA,OAAO,CAAA,8BAAA,EAAiC,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAQ,CAAA,CAAA;AAAA,MACpE;AAGA,MAAA,IAAI,IAAA,IAAQ,OAAO,IAAA,CAAK,WAAA,KAAgB,UAAA,EAAY;AACnD,QAAA,OAAO,CAAA,6BAAA,EAAgC,0BAAA,CAA2B,IAAI,CAAC,CAAA,CAAA;AAAA,MACxE;AAGA,MAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC3B,QAAA,OAAO,IAAA;AAAA,MACR;AAGA,MAAA,OAAO,0BAAA;AAAA,IACR,CAAA;AAWO,IAAM,gBAAgB,CAAA,OAAA,KAAW;AACvC,MAAA,MAAM,EAAC,IAAA,EAAI,GAAI,OAAA,CAAQ,SAAS,CAAA;AAGhC,MAAA,IAAI,SAAS,IAAA,EAAM;AAClB,QAAA,OAAO,CAAA;AAAA,MACR;AAGA,MAAA,IAAI,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,IAAA,CAAK,IAAA;AAAA,MACb;AAGA,MAAA,IAAIA,QAAAA,CAAO,QAAA,CAAS,IAAI,CAAA,EAAG;AAC1B,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACb;AAGA,MAAA,IAAI,IAAA,IAAQ,OAAO,IAAA,CAAK,aAAA,KAAkB,UAAA,EAAY;AACrD,QAAA,OAAO,KAAK,cAAA,IAAkB,IAAA,CAAK,gBAAe,GAAI,IAAA,CAAK,eAAc,GAAI,IAAA;AAAA,MAC9E;AAGA,MAAA,OAAO,IAAA;AAAA,IACR,CAAA;AASO,IAAM,aAAA,GAAgB,OAAO,IAAA,EAAM,EAAC,MAAI,KAAM;AACpD,MAAA,IAAI,SAAS,IAAA,EAAM;AAElB,QAAA,IAAA,CAAK,GAAA,EAAI;AAAA,MACV,CAAA,MAAO;AAEN,QAAA,MAAM,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,MAC1B;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACxJO,SAAS,cAAA,CAAe,OAAA,GAAU,EAAC,EAAG;AAC5C,EAAA,OAAO,IAAI,OAAA;AAAA,IACV,QAEE,MAAA,CAAO,CAAC,MAAA,EAAQ,KAAA,EAAO,OAAO,KAAA,KAAU;AACxC,MAAA,IAAI,KAAA,GAAQ,MAAM,CAAA,EAAG;AACpB,QAAA,MAAA,CAAO,KAAK,KAAA,CAAM,KAAA,CAAM,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,MAC1C;AAEA,MAAA,OAAO,MAAA;AAAA,IACR,CAAA,EAAG,EAAE,CAAA,CACJ,OAAO,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAAM;AAC1B,MAAA,IAAI;AACH,QAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,QAAA,mBAAA,CAAoB,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AACvC,QAAA,OAAO,IAAA;AAAA,MACR,CAAA,CAAA,MAAQ;AACP,QAAA,OAAO,KAAA;AAAA,MACR;AAAA,IACD,CAAC;AAAA,GAEH;AACD;AA1QA,IAUM,oBAWA,mBAAA,EAsBe,OAAA;AA3CrB,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wCAAA,GAAA;AAUA,IAAM,qBAAqB,OAAO,IAAA,CAAK,uBAAuB,UAAA,GAC7D,IAAA,CAAK,qBACL,CAAA,IAAA,KAAQ;AACP,MAAA,IAAI,CAAC,yBAAA,CAA0B,IAAA,CAAK,IAAI,CAAA,EAAG;AAC1C,QAAA,MAAM,KAAA,GAAQ,IAAI,SAAA,CAAU,CAAA,wCAAA,EAA2C,IAAI,CAAA,CAAA,CAAG,CAAA;AAC9E,QAAA,MAAA,CAAO,eAAe,KAAA,EAAO,MAAA,EAAQ,EAAC,KAAA,EAAO,0BAAyB,CAAA;AACtE,QAAA,MAAM,KAAA;AAAA,MACP;AAAA,IACD,CAAA;AAGD,IAAM,mBAAA,GAAsB,OAAO,IAAA,CAAK,mBAAA,KAAwB,aAC/D,IAAA,CAAK,mBAAA,GACL,CAAC,IAAA,EAAM,KAAA,KAAU;AAChB,MAAA,IAAI,iCAAA,CAAkC,IAAA,CAAK,KAAK,CAAA,EAAG;AAClD,QAAA,MAAM,KAAA,GAAQ,IAAI,SAAA,CAAU,CAAA,sCAAA,EAAyC,IAAI,CAAA,EAAA,CAAI,CAAA;AAC7E,QAAA,MAAA,CAAO,eAAe,KAAA,EAAO,MAAA,EAAQ,EAAC,KAAA,EAAO,oBAAmB,CAAA;AAChE,QAAA,MAAM,KAAA;AAAA,MACP;AAAA,IACD,CAAA;AAcD,IAAqB,OAAA,GAArB,MAAqB,QAAA,SAAgB,eAAA,CAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOpD,YAAY,IAAA,EAAM;AAGjB,QAAA,IAAI,SAAS,EAAC;AACd,QAAA,IAAI,gBAAgB,QAAA,EAAS;AAC5B,UAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,UAAA,KAAA,MAAW,CAAC,IAAA,EAAM,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AACjD,YAAA,MAAA,CAAO,IAAA,CAAK,GAAG,MAAA,CAAO,GAAA,CAAI,WAAS,CAAC,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AAAA,UAClD;AAAA,QACD,CAAA,MAAA,IAAW,QAAQ,IAAA,EAAM,CAEzB,MAAA,IAAW,OAAO,IAAA,KAAS,QAAA,IAAY,CAACE,KAAAA,CAAM,gBAAA,CAAiB,IAAI,CAAA,EAAG;AACrE,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA;AAEnC,UAAA,IAAI,UAAU,IAAA,EAAM;AAEnB,YAAA,MAAA,CAAO,IAAA,CAAK,GAAG,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,UACpC,CAAA,MAAO;AACN,YAAA,IAAI,OAAO,WAAW,UAAA,EAAY;AACjC,cAAA,MAAM,IAAI,UAAU,+BAA+B,CAAA;AAAA,YACpD;AAIA,YAAA,MAAA,GAAS,CAAC,GAAG,IAAI,CAAA,CACf,IAAI,CAAA,IAAA,KAAQ;AACZ,cAAA,IACC,OAAO,IAAA,KAAS,QAAA,IAAYA,KAAAA,CAAM,gBAAA,CAAiB,IAAI,CAAA,EACtD;AACD,gBAAA,MAAM,IAAI,UAAU,6CAA6C,CAAA;AAAA,cAClE;AAEA,cAAA,OAAO,CAAC,GAAG,IAAI,CAAA;AAAA,YAChB,CAAC,CAAA,CAAE,GAAA,CAAI,CAAA,IAAA,KAAQ;AACd,cAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACtB,gBAAA,MAAM,IAAI,UAAU,6CAA6C,CAAA;AAAA,cAClE;AAEA,cAAA,OAAO,CAAC,GAAG,IAAI,CAAA;AAAA,YAChB,CAAC,CAAA;AAAA,UACH;AAAA,QACD,CAAA,MAAO;AACN,UAAA,MAAM,IAAI,UAAU,sIAAyI,CAAA;AAAA,QAC9J;AAGA,QAAA,MAAA,GACC,MAAA,CAAO,SAAS,CAAA,GACf,MAAA,CAAO,IAAI,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAAM;AAC7B,UAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,UAAA,mBAAA,CAAoB,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AACvC,UAAA,OAAO,CAAC,OAAO,IAAI,CAAA,CAAE,aAAY,EAAG,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAClD,CAAC,CAAA,GACD,MAAA;AAEF,QAAA,KAAA,CAAM,MAAM,CAAA;AAIZ,QAAA,OAAO,IAAI,MAAM,IAAA,EAAM;AAAA,UACtB,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG,QAAA,EAAU;AACxB,YAAA,QAAQ,CAAA;AAAG,cACV,KAAK,QAAA;AAAA,cACL,KAAK,KAAA;AACJ,gBAAA,OAAO,CAAC,MAAM,KAAA,KAAU;AACvB,kBAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,kBAAA,mBAAA,CAAoB,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AACvC,kBAAA,OAAO,eAAA,CAAgB,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA;AAAA,oBACnC,MAAA;AAAA,oBACA,MAAA,CAAO,IAAI,CAAA,CAAE,WAAA,EAAY;AAAA,oBACzB,OAAO,KAAK;AAAA,mBACb;AAAA,gBACD,CAAA;AAAA,cAED,KAAK,QAAA;AAAA,cACL,KAAK,KAAA;AAAA,cACL,KAAK,QAAA;AACJ,gBAAA,OAAO,CAAA,IAAA,KAAQ;AACd,kBAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,kBAAA,OAAO,eAAA,CAAgB,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA;AAAA,oBACnC,MAAA;AAAA,oBACA,MAAA,CAAO,IAAI,CAAA,CAAE,WAAA;AAAY,mBAC1B;AAAA,gBACD,CAAA;AAAA,cAED,KAAK,MAAA;AACJ,gBAAA,OAAO,MAAM;AACZ,kBAAA,MAAA,CAAO,IAAA,EAAK;AACZ,kBAAA,OAAO,IAAI,IAAI,eAAA,CAAgB,SAAA,CAAU,KAAK,IAAA,CAAK,MAAM,CAAC,CAAA,CAAE,IAAA,EAAK;AAAA,gBAClE,CAAA;AAAA,cAED;AACC,gBAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG,QAAQ,CAAA;AAAA;AACxC,UACD;AAAA,SACA,CAAA;AAAA,MAEF;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAI;AAC1B,QAAA,OAAO,KAAK,WAAA,CAAY,IAAA;AAAA,MACzB;AAAA,MAEA,QAAA,GAAW;AACV,QAAA,OAAO,MAAA,CAAO,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAAA,MAC3C;AAAA,MAEA,IAAI,IAAA,EAAM;AACT,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAC/B,QAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACxB,UAAA,OAAO,IAAA;AAAA,QACR;AAEA,QAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AAC5B,QAAA,IAAI,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA,EAAG;AACrC,UAAA,KAAA,GAAQ,MAAM,WAAA,EAAY;AAAA,QAC3B;AAEA,QAAA,OAAO,KAAA;AAAA,MACR;AAAA,MAEA,OAAA,CAAQ,QAAA,EAAU,OAAA,GAAU,MAAA,EAAW;AACtC,QAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,IAAA,EAAK,EAAG;AAC/B,UAAA,OAAA,CAAQ,KAAA,CAAM,QAAA,EAAU,OAAA,EAAS,CAAC,IAAA,CAAK,IAAI,IAAI,CAAA,EAAG,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,QAC9D;AAAA,MACD;AAAA,MAEA,CAAE,MAAA,GAAS;AACV,QAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,IAAA,EAAK,EAAG;AAC/B,UAAA,MAAM,IAAA,CAAK,IAAI,IAAI,CAAA;AAAA,QACpB;AAAA,MACD;AAAA;AAAA;AAAA;AAAA,MAKA,CAAE,OAAA,GAAU;AACX,QAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,IAAA,EAAK,EAAG;AAC/B,UAAA,MAAM,CAAC,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,QAC5B;AAAA,MACD;AAAA,MAEA,CAAC,MAAA,CAAO,QAAQ,CAAA,GAAI;AACnB,QAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,GAAA,GAAM;AACL,QAAA,OAAO,CAAC,GAAG,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAC/C,UAAA,MAAA,CAAO,GAAG,CAAA,GAAI,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAC7B,UAAA,OAAO,MAAA;AAAA,QACR,CAAA,EAAG,EAAE,CAAA;AAAA,MACN;AAAA;AAAA;AAAA;AAAA,MAKA,CAAC,MAAA,CAAO,GAAA,CAAI,4BAA4B,CAAC,CAAA,GAAI;AAC5C,QAAA,OAAO,CAAC,GAAG,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAC/C,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAG9B,UAAA,IAAI,QAAQ,MAAA,EAAQ;AACnB,YAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA;AAAA,UACvB,CAAA,MAAO;AACN,YAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAO,SAAS,CAAA,GAAI,MAAA,GAAS,OAAO,CAAC,CAAA;AAAA,UACpD;AAEA,UAAA,OAAO,MAAA;AAAA,QACR,CAAA,EAAG,EAAE,CAAA;AAAA,MACN;AAAA,KACD;AAMA,IAAA,MAAA,CAAO,gBAAA;AAAA,MACN,OAAA,CAAQ,SAAA;AAAA,MACR,CAAC,OAAO,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,MAAA,EAAQ,QAAA,KAAa;AACpE,QAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,EAAC,UAAA,EAAY,IAAA,EAAI;AACpC,QAAA,OAAO,MAAA;AAAA,MACR,CAAA,EAAG,EAAE;AAAA,KACN;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7OA,IAAM,cAAA,EAQO,UAAA;AARb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kDAAA,GAAA;AAAA,IAAM,cAAA,uBAAqB,GAAA,CAAI,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC,CAAA;AAQjD,IAAM,aAAa,CAAA,IAAA,KAAQ;AACjC,MAAA,OAAO,cAAA,CAAe,IAAI,IAAI,CAAA;AAAA,IAC/B,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACVA,IAUMC,UAAAA,EAWe,QAAA;AArBrB,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yCAAA,GAAA;AAMA,IAAA,YAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AAEA,IAAMA,UAAAA,GAAY,OAAO,oBAAoB,CAAA;AAW7C,IAAqB,QAAA,GAArB,MAAqB,SAAA,SAAiB,IAAA,CAAK;AAAA,MAC1C,WAAA,CAAY,IAAA,GAAO,IAAA,EAAM,OAAA,GAAU,EAAC,EAAG;AACtC,QAAA,KAAA,CAAM,MAAM,OAAO,CAAA;AAGnB,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,IAAA,GAAO,QAAQ,MAAA,GAAS,GAAA;AAEzD,QAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAA;AAE3C,QAAA,IAAI,SAAS,IAAA,IAAQ,CAAC,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,EAAG;AAClD,UAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,IAAA,EAAM,IAAI,CAAA;AACjD,UAAA,IAAI,WAAA,EAAa;AAChB,YAAA,OAAA,CAAQ,MAAA,CAAO,gBAAgB,WAAW,CAAA;AAAA,UAC3C;AAAA,QACD;AAEA,QAAA,IAAA,CAAKA,UAAS,CAAA,GAAI;AAAA,UACjB,IAAA,EAAM,SAAA;AAAA,UACN,KAAK,OAAA,CAAQ,GAAA;AAAA,UACb,MAAA;AAAA,UACA,UAAA,EAAY,QAAQ,UAAA,IAAc,EAAA;AAAA,UAClC,OAAA;AAAA,UACA,SAAS,OAAA,CAAQ,OAAA;AAAA,UACjB,eAAe,OAAA,CAAQ;AAAA,SACxB;AAAA,MACD;AAAA,MAEA,IAAI,IAAA,GAAO;AACV,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,IAAA;AAAA,MACxB;AAAA,MAEA,IAAI,GAAA,GAAM;AACT,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,GAAA,IAAO,EAAA;AAAA,MAC/B;AAAA,MAEA,IAAI,MAAA,GAAS;AACZ,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,MAAA;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,EAAA,GAAK;AACR,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,MAAA,IAAU,OAAO,IAAA,CAAKA,UAAS,EAAE,MAAA,GAAS,GAAA;AAAA,MAClE;AAAA,MAEA,IAAI,UAAA,GAAa;AAChB,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,OAAA,GAAU,CAAA;AAAA,MAClC;AAAA,MAEA,IAAI,UAAA,GAAa;AAChB,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,UAAA;AAAA,MACxB;AAAA,MAEA,IAAI,OAAA,GAAU;AACb,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,OAAA;AAAA,MACxB;AAAA,MAEA,IAAI,aAAA,GAAgB;AACnB,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,aAAA;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,KAAA,GAAQ;AACP,QAAA,OAAO,IAAI,SAAA,CAAS,KAAA,CAAM,IAAA,EAAM,IAAA,CAAK,aAAa,CAAA,EAAG;AAAA,UACpD,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,KAAK,IAAA,CAAK,GAAA;AAAA,UACV,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,YAAY,IAAA,CAAK,UAAA;AAAA,UACjB,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,IAAI,IAAA,CAAK,EAAA;AAAA,UACT,YAAY,IAAA,CAAK,UAAA;AAAA,UACjB,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,eAAe,IAAA,CAAK;AAAA,SACpB,CAAA;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,QAAA,CAAS,GAAA,EAAK,MAAA,GAAS,GAAA,EAAK;AAClC,QAAA,IAAI,CAAC,UAAA,CAAW,MAAM,CAAA,EAAG;AACxB,UAAA,MAAM,IAAI,WAAW,iEAAiE,CAAA;AAAA,QACvF;AAEA,QAAA,OAAO,IAAI,UAAS,IAAA,EAAM;AAAA,UACzB,OAAA,EAAS;AAAA,YACR,QAAA,EAAU,IAAI,GAAA,CAAI,GAAG,EAAE,QAAA;AAAS,WACjC;AAAA,UACA;AAAA,SACA,CAAA;AAAA,MACF;AAAA,MAEA,OAAO,KAAA,GAAQ;AACd,QAAA,MAAM,QAAA,GAAW,IAAI,SAAA,CAAS,IAAA,EAAM,EAAC,MAAA,EAAQ,CAAA,EAAG,UAAA,EAAY,EAAA,EAAG,CAAA;AAC/D,QAAA,QAAA,CAASA,UAAS,EAAE,IAAA,GAAO,OAAA;AAC3B,QAAA,OAAO,QAAA;AAAA,MACR;AAAA,MAEA,OAAO,IAAA,CAAK,IAAA,GAAO,MAAA,EAAW,IAAA,GAAO,EAAC,EAAG;AACxC,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAEhC,QAAA,IAAI,SAAS,MAAA,EAAW;AACvB,UAAA,MAAM,IAAI,UAAU,+BAA+B,CAAA;AAAA,QACpD;AAEA,QAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAA,IAAQ,KAAK,OAAO,CAAA;AAEhD,QAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,EAAG;AACjC,UAAA,OAAA,CAAQ,GAAA,CAAI,gBAAgB,kBAAkB,CAAA;AAAA,QAC/C;AAEA,QAAA,OAAO,IAAI,UAAS,IAAA,EAAM;AAAA,UACzB,GAAG,IAAA;AAAA,UACH;AAAA,SACA,CAAA;AAAA,MACF;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAI;AAC1B,QAAA,OAAO,UAAA;AAAA,MACR;AAAA,KACD;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,SAAA,EAAW;AAAA,MAC3C,IAAA,EAAM,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACvB,GAAA,EAAK,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACtB,MAAA,EAAQ,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACzB,EAAA,EAAI,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACrB,UAAA,EAAY,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC7B,UAAA,EAAY,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC7B,OAAA,EAAS,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC1B,KAAA,EAAO,EAAC,UAAA,EAAY,IAAA;AAAI,KACxB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/JD,IAAa,SAAA;AAAb,IAAA,eAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iDAAA,GAAA;AAAO,IAAM,YAAY,CAAA,SAAA,KAAa;AACrC,MAAA,IAAI,UAAU,MAAA,EAAQ;AACrB,QAAA,OAAO,SAAA,CAAU,MAAA;AAAA,MAClB;AAEA,MAAA,MAAM,UAAA,GAAa,SAAA,CAAU,IAAA,CAAK,MAAA,GAAS,CAAA;AAC3C,MAAA,MAAM,IAAA,GAAO,UAAU,IAAA,KAAS,SAAA,CAAU,KAAK,UAAU,CAAA,KAAM,MAAM,GAAA,GAAM,EAAA,CAAA;AAC3E,MAAA,OAAO,UAAU,IAAA,CAAK,UAAA,GAAa,KAAK,MAAM,CAAA,KAAM,MAAM,GAAA,GAAM,EAAA;AAAA,IACjE,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACSO,SAAS,yBAAA,CAA0B,GAAA,EAAK,UAAA,GAAa,KAAA,EAAO;AAElE,EAAA,IAAI,OAAO,IAAA,EAAM;AAChB,IAAA,OAAO,aAAA;AAAA,EACR;AAEA,EAAA,GAAA,GAAM,IAAI,IAAI,GAAG,CAAA;AAGjB,EAAA,IAAI,sBAAA,CAAuB,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC9C,IAAA,OAAO,aAAA;AAAA,EACR;AAGA,EAAA,GAAA,CAAI,QAAA,GAAW,EAAA;AAIf,EAAA,GAAA,CAAI,QAAA,GAAW,EAAA;AAIf,EAAA,GAAA,CAAI,IAAA,GAAO,EAAA;AAGX,EAAA,IAAI,UAAA,EAAY;AAGf,IAAA,GAAA,CAAI,QAAA,GAAW,EAAA;AAIf,IAAA,GAAA,CAAI,MAAA,GAAS,EAAA;AAAA,EACd;AAGA,EAAA,OAAO,GAAA;AACR;AA2BO,SAAS,uBAAuB,cAAA,EAAgB;AACtD,EAAA,IAAI,CAAC,cAAA,CAAe,GAAA,CAAI,cAAc,CAAA,EAAG;AACxC,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,wBAAA,EAA2B,cAAc,CAAA,CAAE,CAAA;AAAA,EAChE;AAEA,EAAA,OAAO,cAAA;AACR;AAOO,SAAS,+BAA+B,GAAA,EAAK;AAQnD,EAAA,IAAI,eAAA,CAAgB,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAG;AACvC,IAAA,OAAO,IAAA;AAAA,EACR;AAGA,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,eAAe,EAAE,CAAA;AACjD,EAAA,MAAM,aAAA,GAAgB,KAAK,MAAM,CAAA;AAEjC,EAAA,IAAI,aAAA,KAAkB,CAAA,IAAK,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA,EAAG;AACjD,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,IAAI,aAAA,KAAkB,CAAA,IAAK,kCAAA,CAAmC,IAAA,CAAK,MAAM,CAAA,EAAG;AAC3E,IAAA,OAAO,IAAA;AAAA,EACR;AAKA,EAAA,IAAI,IAAI,IAAA,KAAS,WAAA,IAAe,IAAI,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG;AAChE,IAAA,OAAO,KAAA;AAAA,EACR;AAGA,EAAA,IAAI,GAAA,CAAI,aAAa,OAAA,EAAS;AAC7B,IAAA,OAAO,IAAA;AAAA,EACR;AASA,EAAA,OAAO,KAAA;AACR;AAOO,SAAS,4BAA4B,GAAA,EAAK;AAEhD,EAAA,IAAI,wBAAA,CAAyB,IAAA,CAAK,GAAG,CAAA,EAAG;AACvC,IAAA,OAAO,IAAA;AAAA,EACR;AAGA,EAAA,IAAI,GAAA,CAAI,aAAa,OAAA,EAAS;AAC7B,IAAA,OAAO,IAAA;AAAA,EACR;AAKA,EAAA,IAAI,sBAAA,CAAuB,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC9C,IAAA,OAAO,IAAA;AAAA,EACR;AAGA,EAAA,OAAO,+BAA+B,GAAG,CAAA;AAC1C;AA0BO,SAAS,0BAA0B,OAAA,EAAS,EAAC,qBAAqB,sBAAA,EAAsB,GAAI,EAAC,EAAG;AAMtG,EAAA,IAAI,OAAA,CAAQ,QAAA,KAAa,aAAA,IAAiB,OAAA,CAAQ,mBAAmB,EAAA,EAAI;AACxE,IAAA,OAAO,IAAA;AAAA,EACR;AAGA,EAAA,MAAM,SAAS,OAAA,CAAQ,cAAA;AAMvB,EAAA,IAAI,OAAA,CAAQ,aAAa,cAAA,EAAgB;AACxC,IAAA,OAAO,aAAA;AAAA,EACR;AAGA,EAAA,MAAM,iBAAiB,OAAA,CAAQ,QAAA;AAG/B,EAAA,IAAI,WAAA,GAAc,0BAA0B,cAAc,CAAA;AAI1D,EAAA,IAAI,cAAA,GAAiB,yBAAA,CAA0B,cAAA,EAAgB,IAAI,CAAA;AAInE,EAAA,IAAI,WAAA,CAAY,QAAA,EAAS,CAAE,MAAA,GAAS,IAAA,EAAM;AACzC,IAAA,WAAA,GAAc,cAAA;AAAA,EACf;AAMA,EAAA,IAAI,mBAAA,EAAqB;AACxB,IAAA,WAAA,GAAc,oBAAoB,WAAW,CAAA;AAAA,EAC9C;AAEA,EAAA,IAAI,sBAAA,EAAwB;AAC3B,IAAA,cAAA,GAAiB,uBAAuB,cAAc,CAAA;AAAA,EACvD;AAGA,EAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAEtC,EAAA,QAAQ,MAAA;AAAQ,IACf,KAAK,aAAA;AACJ,MAAA,OAAO,aAAA;AAAA,IAER,KAAK,QAAA;AACJ,MAAA,OAAO,cAAA;AAAA,IAER,KAAK,YAAA;AACJ,MAAA,OAAO,WAAA;AAAA,IAER,KAAK,eAAA;AAGJ,MAAA,IAAI,4BAA4B,WAAW,CAAA,IAAK,CAAC,2BAAA,CAA4B,UAAU,CAAA,EAAG;AACzF,QAAA,OAAO,aAAA;AAAA,MACR;AAGA,MAAA,OAAO,eAAe,QAAA,EAAS;AAAA,IAEhC,KAAK,iCAAA;AAGJ,MAAA,IAAI,WAAA,CAAY,MAAA,KAAW,UAAA,CAAW,MAAA,EAAQ;AAC7C,QAAA,OAAO,WAAA;AAAA,MACR;AAIA,MAAA,IAAI,4BAA4B,WAAW,CAAA,IAAK,CAAC,2BAAA,CAA4B,UAAU,CAAA,EAAG;AACzF,QAAA,OAAO,aAAA;AAAA,MACR;AAGA,MAAA,OAAO,cAAA;AAAA,IAER,KAAK,aAAA;AAGJ,MAAA,IAAI,WAAA,CAAY,MAAA,KAAW,UAAA,CAAW,MAAA,EAAQ;AAC7C,QAAA,OAAO,WAAA;AAAA,MACR;AAGA,MAAA,OAAO,aAAA;AAAA,IAER,KAAK,0BAAA;AAGJ,MAAA,IAAI,WAAA,CAAY,MAAA,KAAW,UAAA,CAAW,MAAA,EAAQ;AAC7C,QAAA,OAAO,WAAA;AAAA,MACR;AAGA,MAAA,OAAO,cAAA;AAAA,IAER,KAAK,4BAAA;AAGJ,MAAA,IAAI,4BAA4B,WAAW,CAAA,IAAK,CAAC,2BAAA,CAA4B,UAAU,CAAA,EAAG;AACzF,QAAA,OAAO,aAAA;AAAA,MACR;AAGA,MAAA,OAAO,WAAA;AAAA,IAER;AACC,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,wBAAA,EAA2B,MAAM,CAAA,CAAE,CAAA;AAAA;AAE1D;AAOO,SAAS,8BAA8B,OAAA,EAAS;AAGtD,EAAA,MAAM,gBAAgB,OAAA,CAAQ,GAAA,CAAI,iBAAiB,CAAA,IAAK,EAAA,EAAI,MAAM,QAAQ,CAAA;AAG1E,EAAA,IAAI,MAAA,GAAS,EAAA;AAMb,EAAA,KAAA,MAAW,SAAS,YAAA,EAAc;AACjC,IAAA,IAAI,KAAA,IAAS,cAAA,CAAe,GAAA,CAAI,KAAK,CAAA,EAAG;AACvC,MAAA,MAAA,GAAS,KAAA;AAAA,IACV;AAAA,EACD;AAGA,EAAA,OAAO,MAAA;AACR;AAnVA,IA2Da,cAAA,EAeA,uBAAA;AA1Eb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+CAAA,GAAA;AA2DO,IAAM,cAAA,uBAAqB,GAAA,CAAI;AAAA,MACrC,EAAA;AAAA,MACA,aAAA;AAAA,MACA,4BAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,0BAAA;AAAA,MACA,iCAAA;AAAA,MACA;AAAA,KACA,CAAA;AAKM,IAAM,uBAAA,GAA0B,iCAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC1EvC,IAkBMA,UAAAA,EAQA,SAAA,EAOA,aAAA,EAae,OAAA,EAmLR,qBAAA;AAjOb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wCAAA,GAAA;AAUA,IAAA,YAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,OAAA,EAAA;AACA,IAAA,eAAA,EAAA;AACA,IAAA,aAAA,EAAA;AAIA,IAAMA,UAAAA,GAAY,OAAO,mBAAmB,CAAA;AAQ5C,IAAM,YAAY,CAAA,MAAA,KAAU;AAC3B,MAAA,OACC,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,MAAA,CAAOA,UAAS,CAAA,KAAM,QAAA;AAAA,IAE/B,CAAA;AAEA,IAAM,aAAA,GAAgBC,SAAAA;AAAA,MAAU,MAAM;AAAA,MAAC,CAAA;AAAA,MACtC,8DAAA;AAAA,MACA;AAAA,KAAgE;AAWjE,IAAqB,OAAA,GAArB,MAAqB,QAAA,SAAgB,IAAA,CAAK;AAAA,MACzC,WAAA,CAAY,KAAA,EAAO,IAAA,GAAO,EAAC,EAAG;AAC7B,QAAA,IAAI,SAAA;AAGJ,QAAA,IAAI,SAAA,CAAU,KAAK,CAAA,EAAG;AACrB,UAAA,SAAA,GAAY,IAAI,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AAAA,QAC9B,CAAA,MAAO;AACN,UAAA,SAAA,GAAY,IAAI,IAAI,KAAK,CAAA;AACzB,UAAA,KAAA,GAAQ,EAAC;AAAA,QACV;AAEA,QAAA,IAAI,SAAA,CAAU,QAAA,KAAa,EAAA,IAAM,SAAA,CAAU,aAAa,EAAA,EAAI;AAC3D,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,SAAS,CAAA,qCAAA,CAAuC,CAAA;AAAA,QACxE;AAEA,QAAA,IAAI,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM,MAAA,IAAU,KAAA;AAC5C,QAAA,IAAI,uCAAA,CAAwC,IAAA,CAAK,MAAM,CAAA,EAAG;AACzD,UAAA,MAAA,GAAS,OAAO,WAAA,EAAY;AAAA,QAC7B;AAEA,QAAA,IAAI,CAAC,SAAA,CAAU,IAAI,CAAA,IAAK,UAAU,IAAA,EAAM;AACvC,UAAA,aAAA,EAAc;AAAA,QACf;AAGA,QAAA,IAAA,CAAK,IAAA,CAAK,IAAA,IAAQ,IAAA,IAAS,SAAA,CAAU,KAAK,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,IAAA,MAC5D,MAAA,KAAW,KAAA,IAAS,MAAA,KAAW,MAAA,CAAA,EAAS;AACzC,UAAA,MAAM,IAAI,UAAU,+CAA+C,CAAA;AAAA,QACpE;AAEA,QAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,GACtB,IAAA,CAAK,IAAA,GACJ,SAAA,CAAU,KAAK,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,IAAA,GACnC,KAAA,CAAM,KAAK,CAAA,GACX,IAAA;AAEF,QAAA,KAAA,CAAM,SAAA,EAAW;AAAA,UAChB,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,IAAA,IAAQ;AAAA,SACjC,CAAA;AAED,QAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAA,CAAK,WAAW,KAAA,CAAM,OAAA,IAAW,EAAE,CAAA;AAE/D,QAAA,IAAI,cAAc,IAAA,IAAQ,CAAC,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,EAAG;AACvD,UAAA,MAAM,WAAA,GAAc,kBAAA,CAAmB,SAAA,EAAW,IAAI,CAAA;AACtD,UAAA,IAAI,WAAA,EAAa;AAChB,YAAA,OAAA,CAAQ,GAAA,CAAI,gBAAgB,WAAW,CAAA;AAAA,UACxC;AAAA,QACD;AAEA,QAAA,IAAI,MAAA,GAAS,SAAA,CAAU,KAAK,CAAA,GAC3B,MAAM,MAAA,GACN,IAAA;AACD,QAAA,IAAI,YAAY,IAAA,EAAM;AACrB,UAAA,MAAA,GAAS,IAAA,CAAK,MAAA;AAAA,QACf;AAGA,QAAA,IAAI,MAAA,IAAU,IAAA,IAAQ,CAAC,aAAA,CAAc,MAAM,CAAA,EAAG;AAC7C,UAAA,MAAM,IAAI,UAAU,gEAAgE,CAAA;AAAA,QACrF;AAIA,QAAA,IAAI,WAAW,IAAA,CAAK,QAAA,IAAY,IAAA,GAAO,KAAA,CAAM,WAAW,IAAA,CAAK,QAAA;AAC7D,QAAA,IAAI,aAAa,EAAA,EAAI;AAEpB,UAAA,QAAA,GAAW,aAAA;AAAA,QACZ,WAAW,QAAA,EAAU;AAEpB,UAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,QAAQ,CAAA;AAEvC,UAAA,QAAA,GAAW,uBAAA,CAAwB,IAAA,CAAK,cAAc,CAAA,GAAI,QAAA,GAAW,cAAA;AAAA,QACtE,CAAA,MAAO;AACN,UAAA,QAAA,GAAW,MAAA;AAAA,QACZ;AAEA,QAAA,IAAA,CAAKD,UAAS,CAAA,GAAI;AAAA,UACjB,MAAA;AAAA,UACA,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,KAAA,CAAM,QAAA,IAAY,QAAA;AAAA,UAC7C,OAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD;AAGA,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,KAAW,MAAA,GAAa,KAAA,CAAM,WAAW,MAAA,GAAY,EAAA,GAAK,KAAA,CAAM,MAAA,GAAU,IAAA,CAAK,MAAA;AAClG,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,KAAa,MAAA,GAAa,KAAA,CAAM,aAAa,MAAA,GAAY,IAAA,GAAO,KAAA,CAAM,QAAA,GAAY,IAAA,CAAK,QAAA;AAC5G,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,OAAA,IAAW,KAAA,CAAM,OAAA,IAAW,CAAA;AAChD,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,KAAA,IAAS,KAAA,CAAM,KAAA;AACjC,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAA,CAAK,aAAA,IAAiB,KAAA,CAAM,aAAA,IAAiB,KAAA;AAClE,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA,CAAK,kBAAA,IAAsB,KAAA,CAAM,kBAAA,IAAsB,KAAA;AAIjF,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,cAAA,IAAkB,KAAA,CAAM,cAAA,IAAkB,EAAA;AAAA,MACtE;AAAA;AAAA,MAGA,IAAI,MAAA,GAAS;AACZ,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,MAAA;AAAA,MACxB;AAAA;AAAA,MAGA,IAAI,GAAA,GAAM;AACT,QAAA,OAAOE,MAAA,CAAU,IAAA,CAAKF,UAAS,CAAA,CAAE,SAAS,CAAA;AAAA,MAC3C;AAAA;AAAA,MAGA,IAAI,OAAA,GAAU;AACb,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,OAAA;AAAA,MACxB;AAAA,MAEA,IAAI,QAAA,GAAW;AACd,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,QAAA;AAAA,MACxB;AAAA;AAAA,MAGA,IAAI,MAAA,GAAS;AACZ,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,MAAA;AAAA,MACxB;AAAA;AAAA,MAGA,IAAI,QAAA,GAAW;AACd,QAAA,IAAI,IAAA,CAAKA,UAAS,CAAA,CAAE,QAAA,KAAa,aAAA,EAAe;AAC/C,UAAA,OAAO,EAAA;AAAA,QACR;AAEA,QAAA,IAAI,IAAA,CAAKA,UAAS,CAAA,CAAE,QAAA,KAAa,QAAA,EAAU;AAC1C,UAAA,OAAO,cAAA;AAAA,QACR;AAEA,QAAA,IAAI,IAAA,CAAKA,UAAS,CAAA,CAAE,QAAA,EAAU;AAC7B,UAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,QAAA,CAAS,QAAA,EAAS;AAAA,QAC1C;AAEA,QAAA,OAAO,MAAA;AAAA,MACR;AAAA,MAEA,IAAI,cAAA,GAAiB;AACpB,QAAA,OAAO,IAAA,CAAKA,UAAS,CAAA,CAAE,cAAA;AAAA,MACxB;AAAA,MAEA,IAAI,eAAe,cAAA,EAAgB;AAClC,QAAA,IAAA,CAAKA,UAAS,CAAA,CAAE,cAAA,GAAiB,sBAAA,CAAuB,cAAc,CAAA;AAAA,MACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,KAAA,GAAQ;AACP,QAAA,OAAO,IAAI,SAAQ,IAAI,CAAA;AAAA,MACxB;AAAA,MAEA,KAAK,MAAA,CAAO,WAAW,CAAA,GAAI;AAC1B,QAAA,OAAO,SAAA;AAAA,MACR;AAAA,KACD;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAQ,SAAA,EAAW;AAAA,MAC1C,MAAA,EAAQ,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACzB,GAAA,EAAK,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACtB,OAAA,EAAS,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC1B,QAAA,EAAU,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC3B,KAAA,EAAO,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACxB,MAAA,EAAQ,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MACzB,QAAA,EAAU,EAAC,UAAA,EAAY,IAAA,EAAI;AAAA,MAC3B,cAAA,EAAgB,EAAC,UAAA,EAAY,IAAA;AAAI,KACjC,CAAA;AAQM,IAAM,wBAAwB,CAAA,OAAA,KAAW;AAC/C,MAAA,MAAM,EAAC,SAAA,EAAS,GAAI,OAAA,CAAQA,UAAS,CAAA;AACrC,MAAA,MAAM,UAAU,IAAI,OAAA,CAAQ,OAAA,CAAQA,UAAS,EAAE,OAAO,CAAA;AAGtD,MAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC3B,QAAA,OAAA,CAAQ,GAAA,CAAI,UAAU,KAAK,CAAA;AAAA,MAC5B;AAGA,MAAA,IAAI,kBAAA,GAAqB,IAAA;AACzB,MAAA,IAAI,QAAQ,IAAA,KAAS,IAAA,IAAQ,gBAAgB,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,EAAG;AAClE,QAAA,kBAAA,GAAqB,GAAA;AAAA,MACtB;AAEA,MAAA,IAAI,OAAA,CAAQ,SAAS,IAAA,EAAM;AAC1B,QAAA,MAAM,UAAA,GAAa,cAAc,OAAO,CAAA;AAExC,QAAA,IAAI,OAAO,UAAA,KAAe,QAAA,IAAY,CAAC,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA,EAAG;AAChE,UAAA,kBAAA,GAAqB,OAAO,UAAU,CAAA;AAAA,QACvC;AAAA,MACD;AAEA,MAAA,IAAI,kBAAA,EAAoB;AACvB,QAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,kBAAkB,CAAA;AAAA,MACjD;AAKA,MAAA,IAAI,OAAA,CAAQ,mBAAmB,EAAA,EAAI;AAClC,QAAA,OAAA,CAAQ,cAAA,GAAiB,uBAAA;AAAA,MAC1B;AAKA,MAAA,IAAI,OAAA,CAAQ,QAAA,IAAY,OAAA,CAAQ,QAAA,KAAa,aAAA,EAAe;AAC3D,QAAA,OAAA,CAAQA,UAAS,CAAA,CAAE,QAAA,GAAW,yBAAA,CAA0B,OAAO,CAAA;AAAA,MAChE,CAAA,MAAO;AACN,QAAA,OAAA,CAAQA,UAAS,EAAE,QAAA,GAAW,aAAA;AAAA,MAC/B;AAKA,MAAA,IAAI,OAAA,CAAQA,UAAS,CAAA,CAAE,QAAA,YAAoB,GAAA,EAAK;AAC/C,QAAA,OAAA,CAAQ,GAAA,CAAI,SAAA,EAAW,OAAA,CAAQ,QAAQ,CAAA;AAAA,MACxC;AAGA,MAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA,EAAG;AAC/B,QAAA,OAAA,CAAQ,GAAA,CAAI,cAAc,YAAY,CAAA;AAAA,MACvC;AAGA,MAAA,IAAI,QAAQ,QAAA,IAAY,CAAC,OAAA,CAAQ,GAAA,CAAI,iBAAiB,CAAA,EAAG;AACxD,QAAA,OAAA,CAAQ,GAAA,CAAI,mBAAmB,mBAAmB,CAAA;AAAA,MACnD;AAEA,MAAA,IAAI,EAAC,OAAK,GAAI,OAAA;AACd,MAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAChC,QAAA,KAAA,GAAQ,MAAM,SAAS,CAAA;AAAA,MACxB;AAKA,MAAA,MAAM,MAAA,GAAS,UAAU,SAAS,CAAA;AAIlC,MAAA,MAAM,OAAA,GAAU;AAAA;AAAA,QAEf,IAAA,EAAM,UAAU,QAAA,GAAW,MAAA;AAAA;AAAA,QAE3B,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,SAAS,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,4BAA4B,CAAC,CAAA,EAAE;AAAA,QAC3D,oBAAoB,OAAA,CAAQ,kBAAA;AAAA,QAC5B;AAAA,OACD;AAEA,MAAA,OAAO;AAAA;AAAA,QAEN,SAAA;AAAA,QACA;AAAA,OACD;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxTA,IAKa,UAAA;AALb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mDAAA,GAAA;AAAA,IAAA,SAAA,EAAA;AAKO,IAAM,UAAA,GAAN,cAAyB,cAAA,CAAe;AAAA,MAC9C,WAAA,CAAY,OAAA,EAAS,IAAA,GAAO,SAAA,EAAW;AACtC,QAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AAAA,MACpB;AAAA,KACD;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACTA,IAAA,WAAA,GAAA,EAAA;AAAA,QAAA,CAAA,WAAA,EAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,IAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,IAAA,EAAA,MAAA,YAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,OAAA,EAAA,MAAA,KAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AA+CA,eAAO,KAAA,CAA6B,KAAK,QAAA,EAAU;AAClD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AAEvC,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,GAAA,EAAK,QAAQ,CAAA;AACzC,IAAA,MAAM,EAAC,SAAA,EAAW,OAAA,EAAO,GAAI,sBAAsB,OAAO,CAAA;AAC1D,IAAA,IAAI,CAAC,gBAAA,CAAiB,GAAA,CAAI,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9C,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,GAAG,CAAA,cAAA,EAAiB,SAAA,CAAU,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,mBAAA,CAAqB,CAAA;AAAA,IAC5H;AAEA,IAAA,IAAI,SAAA,CAAU,aAAa,OAAA,EAAS;AACnC,MAAA,MAAM,IAAA,GAAO,YAAA,CAAgB,OAAA,CAAQ,GAAG,CAAA;AACxC,MAAA,MAAMG,SAAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,EAAC,OAAA,EAAS,EAAC,cAAA,EAAgB,IAAA,CAAK,QAAA,EAAQ,EAAE,CAAA;AAC9E,MAAA,OAAA,CAAQA,SAAQ,CAAA;AAChB,MAAA;AAAA,IACD;AAGA,IAAA,MAAM,IAAA,GAAA,CAAQ,SAAA,CAAU,QAAA,KAAa,QAAA,GAAW,QAAQC,IAAAA,EAAM,OAAA;AAC9D,IAAA,MAAM,EAAC,QAAM,GAAI,OAAA;AACjB,IAAA,IAAI,QAAA,GAAW,IAAA;AAEf,IAAA,MAAM,QAAQ,MAAM;AACnB,MAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,4BAA4B,CAAA;AACzD,MAAA,MAAA,CAAO,KAAK,CAAA;AACZ,MAAA,IAAI,OAAA,CAAQ,IAAA,IAAQ,OAAA,CAAQ,IAAA,YAAgBC,OAAO,QAAA,EAAU;AAC5D,QAAA,OAAA,CAAQ,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,MAC3B;AAEA,MAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,IAAA,EAAM;AAChC,QAAA;AAAA,MACD;AAEA,MAAA,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA;AAAA,IAClC,CAAA;AAEA,IAAA,IAAI,MAAA,IAAU,OAAO,OAAA,EAAS;AAC7B,MAAA,KAAA,EAAM;AACN,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC9B,MAAA,KAAA,EAAM;AACN,MAAA,QAAA,EAAS;AAAA,IACV,CAAA;AAGA,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,QAAA,IAAY,OAAO,CAAA;AAEnD,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,gBAAgB,CAAA;AAAA,IAClD;AAEA,IAAA,MAAM,WAAW,MAAM;AACtB,MAAA,QAAA,CAAS,KAAA,EAAM;AACf,MAAA,IAAI,MAAA,EAAQ;AACX,QAAA,MAAA,CAAO,mBAAA,CAAoB,SAAS,gBAAgB,CAAA;AAAA,MACrD;AAAA,IACD,CAAA;AAEA,IAAA,QAAA,CAAS,EAAA,CAAG,SAAS,CAAA,KAAA,KAAS;AAC7B,MAAA,MAAA,CAAO,IAAI,UAAA,CAAW,CAAA,WAAA,EAAc,OAAA,CAAQ,GAAG,CAAA,iBAAA,EAAoB,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,QAAA,EAAU,KAAK,CAAC,CAAA;AACpG,MAAA,QAAA,EAAS;AAAA,IACV,CAAC,CAAA;AAED,IAAA,mCAAA,CAAoC,UAAU,CAAA,KAAA,KAAS;AACtD,MAAA,IAAI,QAAA,IAAY,SAAS,IAAA,EAAM;AAC9B,QAAA,QAAA,CAAS,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,MAC5B;AAAA,IACD,CAAC,CAAA;AAGD,IAAA,IAAI,OAAA,CAAQ,UAAU,KAAA,EAAO;AAG5B,MAAA,QAAA,CAAS,EAAA,CAAG,QAAA,EAAU,CAAAC,EAAAA,KAAK;AAC1B,QAAA,IAAI,oBAAA;AACJ,QAAAA,EAAAA,CAAE,eAAA,CAAgB,KAAA,EAAO,MAAM;AAC9B,UAAA,oBAAA,GAAuBA,EAAAA,CAAE,YAAA;AAAA,QAC1B,CAAC,CAAA;AACD,QAAAA,EAAAA,CAAE,eAAA,CAAgB,OAAA,EAAS,CAAA,QAAA,KAAY;AAEtC,UAAA,IAAI,QAAA,IAAY,oBAAA,GAAuBA,EAAAA,CAAE,YAAA,IAAgB,CAAC,QAAA,EAAU;AACnE,YAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,iBAAiB,CAAA;AACzC,YAAA,KAAA,CAAM,IAAA,GAAO,4BAAA;AACb,YAAA,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA;AAAA,UAClC;AAAA,QACD,CAAC,CAAA;AAAA,MACF,CAAC,CAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,EAAA,CAAG,YAAY,CAAA,SAAA,KAAa;AACpC,MAAA,QAAA,CAAS,WAAW,CAAC,CAAA;AACrB,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,SAAA,CAAU,UAAU,CAAA;AAGnD,MAAA,IAAI,UAAA,CAAW,SAAA,CAAU,UAAU,CAAA,EAAG;AAErC,QAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA;AAGvC,QAAA,IAAI,WAAA,GAAc,IAAA;AAClB,QAAA,IAAI;AACH,UAAA,WAAA,GAAc,aAAa,IAAA,GAAO,IAAA,GAAO,IAAI,GAAA,CAAI,QAAA,EAAU,QAAQ,GAAG,CAAA;AAAA,QACvE,CAAA,CAAA,MAAQ;AAIP,UAAA,IAAI,OAAA,CAAQ,aAAa,QAAA,EAAU;AAClC,YAAA,MAAA,CAAO,IAAI,UAAA,CAAW,CAAA,qDAAA,EAAwD,QAAQ,CAAA,CAAA,EAAI,kBAAkB,CAAC,CAAA;AAC7G,YAAA,QAAA,EAAS;AACT,YAAA;AAAA,UACD;AAAA,QACD;AAGA,QAAA,QAAQ,QAAQ,QAAA;AAAU,UACzB,KAAK,OAAA;AACJ,YAAA,MAAA,CAAO,IAAI,UAAA,CAAW,CAAA,uEAAA,EAA0E,QAAQ,GAAG,CAAA,CAAA,EAAI,aAAa,CAAC,CAAA;AAC7H,YAAA,QAAA,EAAS;AACT,YAAA;AAAA,UACD,KAAK,QAAA;AAEJ,YAAA;AAAA,UACD,KAAK,QAAA,EAAU;AAEd,YAAA,IAAI,gBAAgB,IAAA,EAAM;AACzB,cAAA;AAAA,YACD;AAGA,YAAA,IAAI,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,MAAA,EAAQ;AACtC,cAAA,MAAA,CAAO,IAAI,UAAA,CAAW,CAAA,6BAAA,EAAgC,QAAQ,GAAG,CAAA,CAAA,EAAI,cAAc,CAAC,CAAA;AACpF,cAAA,QAAA,EAAS;AACT,cAAA;AAAA,YACD;AAIA,YAAA,MAAM,cAAA,GAAiB;AAAA,cACtB,OAAA,EAAS,IAAI,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAA;AAAA,cACpC,QAAQ,OAAA,CAAQ,MAAA;AAAA,cAChB,OAAA,EAAS,QAAQ,OAAA,GAAU,CAAA;AAAA,cAC3B,OAAO,OAAA,CAAQ,KAAA;AAAA,cACf,UAAU,OAAA,CAAQ,QAAA;AAAA,cAClB,QAAQ,OAAA,CAAQ,MAAA;AAAA,cAChB,IAAA,EAAM,MAAM,OAAO,CAAA;AAAA,cACnB,QAAQ,OAAA,CAAQ,MAAA;AAAA,cAChB,MAAM,OAAA,CAAQ,IAAA;AAAA,cACd,UAAU,OAAA,CAAQ,QAAA;AAAA,cAClB,gBAAgB,OAAA,CAAQ;AAAA,aACzB;AAWA,YAAA,IAAI,CAAC,mBAAA,CAAoB,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA,IAAK,CAAC,cAAA,CAAe,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA,EAAG;AAChG,cAAA,KAAA,MAAW,QAAQ,CAAC,eAAA,EAAiB,kBAAA,EAAoB,QAAA,EAAU,SAAS,CAAA,EAAG;AAC9E,gBAAA,cAAA,CAAe,OAAA,CAAQ,OAAO,IAAI,CAAA;AAAA,cACnC;AAAA,YACD;AAGA,YAAA,IAAI,SAAA,CAAU,eAAe,GAAA,IAAO,OAAA,CAAQ,QAAQ,QAAA,CAAS,IAAA,YAAgBD,OAAO,QAAA,EAAU;AAC7F,cAAA,MAAA,CAAO,IAAI,UAAA,CAAW,0DAAA,EAA4D,sBAAsB,CAAC,CAAA;AACzG,cAAA,QAAA,EAAS;AACT,cAAA;AAAA,YACD;AAGA,YAAA,IAAI,SAAA,CAAU,UAAA,KAAe,GAAA,IAAA,CAAS,SAAA,CAAU,UAAA,KAAe,GAAA,IAAO,SAAA,CAAU,UAAA,KAAe,GAAA,KAAQ,OAAA,CAAQ,MAAA,KAAW,MAAA,EAAS;AAClI,cAAA,cAAA,CAAe,MAAA,GAAS,KAAA;AACxB,cAAA,cAAA,CAAe,IAAA,GAAO,MAAA;AACtB,cAAA,cAAA,CAAe,OAAA,CAAQ,OAAO,gBAAgB,CAAA;AAAA,YAC/C;AAGA,YAAA,MAAM,sBAAA,GAAyB,8BAA8B,OAAO,CAAA;AACpE,YAAA,IAAI,sBAAA,EAAwB;AAC3B,cAAA,cAAA,CAAe,cAAA,GAAiB,sBAAA;AAAA,YACjC;AAGA,YAAA,OAAA,CAAQ,MAAM,IAAI,OAAA,CAAQ,WAAA,EAAa,cAAc,CAAC,CAAC,CAAA;AACvD,YAAA,QAAA,EAAS;AACT,YAAA;AAAA,UACD;AAAA,UAEA;AACC,YAAA,OAAO,OAAO,IAAI,SAAA,CAAU,oBAAoB,OAAA,CAAQ,QAAQ,2CAA2C,CAAC,CAAA;AAAA;AAC9G,MACD;AAGA,MAAA,IAAI,MAAA,EAAQ;AACX,QAAA,SAAA,CAAU,IAAA,CAAK,OAAO,MAAM;AAC3B,UAAA,MAAA,CAAO,mBAAA,CAAoB,SAAS,gBAAgB,CAAA;AAAA,QACrD,CAAC,CAAA;AAAA,MACF;AAEA,MAAA,IAAI,OAAOE,UAAA,CAAK,SAAA,EAAW,IAAIC,WAAAA,IAAe,CAAA,KAAA,KAAS;AACtD,QAAA,IAAI,KAAA,EAAO;AACV,UAAA,MAAA,CAAO,KAAK,CAAA;AAAA,QACb;AAAA,MACD,CAAC,CAAA;AAGD,MAAA,IAAI,OAAA,CAAQ,UAAU,QAAA,EAAU;AAC/B,QAAA,SAAA,CAAU,EAAA,CAAG,WAAW,gBAAgB,CAAA;AAAA,MACzC;AAEA,MAAA,MAAM,eAAA,GAAkB;AAAA,QACvB,KAAK,OAAA,CAAQ,GAAA;AAAA,QACb,QAAQ,SAAA,CAAU,UAAA;AAAA,QAClB,YAAY,SAAA,CAAU,aAAA;AAAA,QACtB,OAAA;AAAA,QACA,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,eAAe,OAAA,CAAQ;AAAA,OACxB;AAGA,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,kBAAkB,CAAA;AAU9C,MAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,IAAY,OAAA,CAAQ,MAAA,KAAW,MAAA,IAAU,OAAA,KAAY,IAAA,IAAQ,SAAA,CAAU,UAAA,KAAe,GAAA,IAAO,SAAA,CAAU,eAAe,GAAA,EAAK;AACvI,QAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAC7C,QAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,QAAA;AAAA,MACD;AAOA,MAAA,MAAM,WAAA,GAAc;AAAA,QACnB,OAAO,IAAA,CAAK,YAAA;AAAA,QACZ,aAAa,IAAA,CAAK;AAAA,OACnB;AAGA,MAAA,IAAI,OAAA,KAAY,MAAA,IAAU,OAAA,KAAY,QAAA,EAAU;AAC/C,QAAA,IAAA,GAAOD,WAAK,IAAA,EAAM,IAAA,CAAK,YAAA,CAAa,WAAW,GAAG,CAAA,KAAA,KAAS;AAC1D,UAAA,IAAI,KAAA,EAAO;AACV,YAAA,MAAA,CAAO,KAAK,CAAA;AAAA,UACb;AAAA,QACD,CAAC,CAAA;AACD,QAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAC7C,QAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,QAAA;AAAA,MACD;AAGA,MAAA,IAAI,OAAA,KAAY,SAAA,IAAa,OAAA,KAAY,WAAA,EAAa;AAGrD,QAAA,MAAM,MAAMA,UAAA,CAAK,SAAA,EAAW,IAAIC,WAAAA,IAAe,CAAA,KAAA,KAAS;AACvD,UAAA,IAAI,KAAA,EAAO;AACV,YAAA,MAAA,CAAO,KAAK,CAAA;AAAA,UACb;AAAA,QACD,CAAC,CAAA;AACD,QAAA,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA,KAAA,KAAS;AAEzB,UAAA,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,EAAA,MAAU,CAAA,EAAM;AAC/B,YAAA,IAAA,GAAOD,UAAA,CAAK,IAAA,EAAM,IAAA,CAAK,aAAA,IAAiB,CAAA,KAAA,KAAS;AAChD,cAAA,IAAI,KAAA,EAAO;AACV,gBAAA,MAAA,CAAO,KAAK,CAAA;AAAA,cACb;AAAA,YACD,CAAC,CAAA;AAAA,UACF,CAAA,MAAO;AACN,YAAA,IAAA,GAAOA,UAAA,CAAK,IAAA,EAAM,IAAA,CAAK,gBAAA,IAAoB,CAAA,KAAA,KAAS;AACnD,cAAA,IAAI,KAAA,EAAO;AACV,gBAAA,MAAA,CAAO,KAAK,CAAA;AAAA,cACb;AAAA,YACD,CAAC,CAAA;AAAA,UACF;AAEA,UAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAC7C,UAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,QACjB,CAAC,CAAA;AACD,QAAA,GAAA,CAAI,IAAA,CAAK,OAAO,MAAM;AAGrB,UAAA,IAAI,CAAC,QAAA,EAAU;AACd,YAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAC7C,YAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,UACjB;AAAA,QACD,CAAC,CAAA;AACD,QAAA;AAAA,MACD;AAGA,MAAA,IAAI,YAAY,IAAA,EAAM;AACrB,QAAA,IAAA,GAAOA,UAAA,CAAK,IAAA,EAAM,IAAA,CAAK,sBAAA,IAA0B,CAAA,KAAA,KAAS;AACzD,UAAA,IAAI,KAAA,EAAO;AACV,YAAA,MAAA,CAAO,KAAK,CAAA;AAAA,UACb;AAAA,QACD,CAAC,CAAA;AACD,QAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAC7C,QAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,QAAA;AAAA,MACD;AAGA,MAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAC7C,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACjB,CAAC,CAAA;AAGD,IAAA,aAAA,CAAc,QAAA,EAAU,OAAO,CAAA,CAAE,KAAA,CAAM,MAAM,CAAA;AAAA,EAC9C,CAAC,CAAA;AACF;AAEA,SAAS,mCAAA,CAAoC,SAAS,aAAA,EAAe;AACpE,EAAA,MAAM,UAAA,GAAaV,QAAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAE1C,EAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,EAAA,IAAI,uBAAA,GAA0B,KAAA;AAC9B,EAAA,IAAI,aAAA;AAEJ,EAAA,OAAA,CAAQ,EAAA,CAAG,YAAY,CAAA,QAAA,KAAY;AAClC,IAAA,MAAM,EAAC,SAAO,GAAI,QAAA;AAClB,IAAA,iBAAA,GAAoB,QAAQ,mBAAmB,CAAA,KAAM,SAAA,IAAa,CAAC,QAAQ,gBAAgB,CAAA;AAAA,EAC5F,CAAC,CAAA;AAED,EAAA,OAAA,CAAQ,EAAA,CAAG,UAAU,CAAA,MAAA,KAAU;AAC9B,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,IAAI,iBAAA,IAAqB,CAAC,uBAAA,EAAyB;AAClD,QAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,iBAAiB,CAAA;AACzC,QAAA,KAAA,CAAM,IAAA,GAAO,4BAAA;AACb,QAAA,aAAA,CAAc,KAAK,CAAA;AAAA,MACpB;AAAA,IACD,CAAA;AAEA,IAAA,MAAM,SAAS,CAAA,GAAA,KAAO;AACrB,MAAA,uBAAA,GAA0BA,SAAO,OAAA,CAAQ,GAAA,CAAI,MAAM,EAAE,CAAA,EAAG,UAAU,CAAA,KAAM,CAAA;AAGxE,MAAA,IAAI,CAAC,2BAA2B,aAAA,EAAe;AAC9C,QAAA,uBAAA,GACCA,QAAAA,CAAO,QAAQ,aAAA,CAAc,KAAA,CAAM,EAAE,CAAA,EAAG,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,MAAM,CAAA,IACpEA,QAAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,EAAE,GAAG,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA,KAAM,CAAA;AAAA,MAEzD;AAEA,MAAA,aAAA,GAAgB,GAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAA,CAAO,eAAA,CAAgB,SAAS,aAAa,CAAA;AAC7C,IAAA,MAAA,CAAO,EAAA,CAAG,QAAQ,MAAM,CAAA;AAExB,IAAA,OAAA,CAAQ,EAAA,CAAG,SAAS,MAAM;AACzB,MAAA,MAAA,CAAO,cAAA,CAAe,SAAS,aAAa,CAAA;AAC5C,MAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,MAAM,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACF,CAAC,CAAA;AACF;AAhaA,IAsCM,gBAAA;AAtCN,IAAA,QAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sCAAA,GAAA;AAcA,IAAA,SAAA,EAAA;AAEA,IAAA,SAAA,EAAA;AACA,IAAA,aAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,OAAA,EAAA;AACA,IAAA,aAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAYA,IAAM,mCAAmB,IAAI,GAAA,CAAI,CAAC,OAAA,EAAS,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZtD,IAAM,oBAAN,MAAwB;AAAA,EAM7B,WAAA,CAAY,OAAA,GAAsB,EAAC,EAAG;AALtC,IAAA,IAAA,CAAQ,eAAA,GAAsC,IAAA;AAG9C,IAAA,IAAA,CAAQ,WAAA,GAAqC,IAAA;AAG3C,IAAA,IAAA,CAAK,OAAA,GAAU;AAAA,MACb,aAAA,EAAe,IAAA;AAAA,MACf,YAAA,EAAc,wBAAA;AAAA,MACd,cAAA,EAAgB,GAAA;AAAA;AAAA,MAChB,iBAAA,EAAmB,GAAA;AAAA;AAAA,MACnB,GAAG;AAAA,KACL;AAEA,IAAA,IAAA,CAAK,oBAAA,EAAqB;AAAA,EAC5B;AAAA,EAEQ,oBAAA,GAA6B;AAEnC,IAAA,IAAA,CAAK,cAAA,EAAe;AAGpB,IAAA,IAAA,CAAK,WAAA,GAAc,YAAY,MAAM;AACnC,MAAA,IAAA,CAAK,cAAA,EAAe;AAAA,IACtB,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,cAAc,CAAA;AAG9B,IAAA,OAAA,CAAQ,EAAA,CAAG,QAAA,EAAU,MAAM,IAAA,CAAK,SAAS,CAAA;AACzC,IAAA,OAAA,CAAQ,EAAA,CAAG,SAAA,EAAW,MAAM,IAAA,CAAK,SAAS,CAAA;AAAA,EAC5C;AAAA,EAEA,MAAc,cAAA,GAAgC;AAC5C,IAAA,IAAI;AACF,MAAA,IAAI,IAAA,CAAK,QAAQ,aAAA,EAAe;AAC9B,QAAA,MAAM,KAAK,kBAAA,EAAmB;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,MAAM,KAAK,sBAAA,EAAuB;AAAA,MACpC;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,MAAc,kBAAA,GAAoC;AAChD,IAAA,IAAI;AAEF,MAAA,MAAMY,MAAAA,GAAAA,CAAS,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,QAAA,EAAA,EAAA,WAAA,CAAA,CAAA,EAAsB,OAAA;AAE3C,MAAA,MAAM,QAAA,GAAW,MAAMA,MAAAA,CAAM,IAAA,CAAK,QAAQ,YAAa,CAAA;AAEvD,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,MAAM,CAAA,KAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,EAAA,EAAK,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAAA,MACnE;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,MAAA,IAAI,KAAK,MAAA,KAAW,SAAA,IAAa,IAAA,CAAK,GAAA,IAAO,KAAK,GAAA,EAAK;AACrD,QAAA,IAAA,CAAK,eAAA,GAAkB;AAAA,UACrB,GAAA,EAAK,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA;AAAA,UACxB,GAAA,EAAK,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA;AAAA,UACxB,QAAA,EAAU,GAAA;AAAA;AAAA,UACV,SAAA,EAAW,KAAK,GAAA;AAAI,SACtB;AAGA,QAAA,OAAA,CAAQ,GAAA,CAAI,wBAAwB,IAAA,CAAK,eAAA,CAAgB,GAAG,CAAA,EAAA,EAAK,IAAA,CAAK,eAAA,CAAgB,GAAG,CAAA,CAAE,CAAA;AAAA,MAC7F,CAAA,MAAO;AACL,QAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,MAC7D;AAAA,IAEF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,0BAA0B,KAAK,CAAA;AAG7C,MAAA,IAAA,CAAK,eAAA,EAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,MAAc,sBAAA,GAAwC;AAGpD,IAAA,OAAA,CAAQ,KAAK,oDAAoD,CAAA;AACjE,IAAA,IAAA,CAAK,eAAA,EAAgB;AAAA,EACvB;AAAA,EAEQ,eAAA,GAAwB;AAE9B,IAAA,IAAA,CAAK,eAAA,GAAkB;AAAA,MACrB,GAAA,EAAK,OAAA;AAAA,MACL,GAAA,EAAK,OAAA;AAAA,MACL,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW,KAAK,GAAA;AAAI,KACtB;AACA,IAAA,OAAA,CAAQ,IAAI,0BAA0B,CAAA;AAAA,EACxC;AAAA,EAEO,kBAAA,GAAyC;AAC9C,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EACd;AAAA,EAEO,SAAS,IAAA,EAA6B;AAC3C,IAAA,IAAI,CAAC,KAAK,eAAA,EAAiB;AACzB,MAAA,OAAA,CAAQ,KAAK,sCAAsC,CAAA;AACnD,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,WAAW,IAAA,CAAK,iBAAA;AAAA,MACpB,KAAK,eAAA,CAAgB,GAAA;AAAA,MACrB,KAAK,eAAA,CAAgB,GAAA;AAAA,MACrB,IAAA,CAAK,GAAA;AAAA,MACL,IAAA,CAAK;AAAA,KACP;AAEA,IAAA,MAAM,QAAA,GAAW,YAAY,IAAA,CAAK,MAAA;AAElC,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,gBAAA,EAAmB,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAC,CAAA,oBAAA,EAAuB,IAAA,CAAK,MAAM,CAAA,YAAA,EAAe,QAAA,GAAW,QAAA,GAAW,SAAS,CAAA,CAAE,CAAA;AAEpI,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEQ,iBAAA,CAAkB,IAAA,EAAc,IAAA,EAAc,IAAA,EAAc,IAAA,EAAsB;AAExF,IAAA,MAAM,CAAA,GAAI,MAAA;AACV,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAA,GAAO,IAAI,CAAA;AACvC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAA,GAAO,IAAI,CAAA;AAEvC,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,CAAC,CAAA,GACtC,IAAA,CAAK,GAAA,CAAI,KAAK,SAAA,CAAU,IAAI,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,GAC9D,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA;AAEhD,IAAA,MAAM,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,CAAA,GAAI,CAAC,CAAC,CAAA;AAEvD,IAAA,OAAO,CAAA,GAAI,CAAA;AAAA,EACb;AAAA,EAEQ,UAAU,OAAA,EAAyB;AACzC,IAAA,OAAO,OAAA,IAAW,KAAK,EAAA,GAAK,GAAA,CAAA;AAAA,EAC9B;AAAA,EAEO,yBAAA,CAA0B,KAAa,GAAA,EAAmB;AAC/D,IAAA,IAAA,CAAK,eAAA,GAAkB;AAAA,MACrB,GAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA,EAAU,CAAA;AAAA,MACV,SAAA,EAAW,KAAK,GAAA;AAAI,KACtB;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,mBAAA,EAAsB,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,EACjD;AAAA,EAEO,OAAA,GAAgB;AACrB,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,aAAA,CAAc,KAAK,WAAW,CAAA;AAC9B,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,IACrB;AAAA,EACF;AACF;AAGO,SAAS,wBAAA,CACd,MACA,OAAA,EACe;AACf,EAAA,MAAM,SAAA,GAAY,IAAI,iBAAA,CAAkB,OAAO,CAAA;AAE/C,EAAA,OAAO,MAAM,SAAA,CAAU,QAAA,CAAS,IAAI,CAAA;AACtC;AAGO,SAAS,YAAY,IAAA,EAAmC;AAC7D,EAAA,OAAO,wBAAA,CAAyB,IAAA,EAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC/D;AAGA,eAAsB,mBAAmB,OAAA,EAAmD;AAC1F,EAAA,MAAM,MAAA,GAAS,IAAI,iBAAA,CAAkB,OAAO,CAAA;AAG5C,EAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,GAAI,CAAC,CAAA;AAEtD,EAAA,MAAM,QAAA,GAAW,OAAO,kBAAA,EAAmB;AAC3C,EAAA,MAAA,CAAO,OAAA,EAAQ;AAEf,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,wBAAA,CACd,QACA,MAAA,EACQ;AACR,EAAA,MAAM,MAAA,GAAS,IAAI,iBAAA,EAAkB;AACrC,EAAA,MAAM,WAAY,MAAA,CAAe,iBAAA;AAAA,IAC/B,MAAA,CAAO,GAAA;AAAA,IAAK,MAAA,CAAO,GAAA;AAAA,IAAK,MAAA,CAAO,GAAA;AAAA,IAAK,MAAA,CAAO;AAAA,GAC7C;AACA,EAAA,MAAA,CAAO,OAAA,EAAQ;AACf,EAAA,OAAO,QAAA;AACT","file":"platform_gps_helper.mjs","sourcesContent":["export interface MimeBuffer extends Buffer {\n\ttype: string;\n\ttypeFull: string;\n\tcharset: string;\n}\n\n/**\n * Returns a `Buffer` instance from the given data URI `uri`.\n *\n * @param {String} uri Data URI to turn into a Buffer instance\n * @returns {Buffer} Buffer instance from Data URI\n * @api public\n */\nexport function dataUriToBuffer(uri: string): MimeBuffer {\n\tif (!/^data:/i.test(uri)) {\n\t\tthrow new TypeError(\n\t\t\t'`uri` does not appear to be a Data URI (must begin with \"data:\")'\n\t\t);\n\t}\n\n\t// strip newlines\n\turi = uri.replace(/\\r?\\n/g, '');\n\n\t// split the URI up into the \"metadata\" and the \"data\" portions\n\tconst firstComma = uri.indexOf(',');\n\tif (firstComma === -1 || firstComma <= 4) {\n\t\tthrow new TypeError('malformed data: URI');\n\t}\n\n\t// remove the \"data:\" scheme and parse the metadata\n\tconst meta = uri.substring(5, firstComma).split(';');\n\n\tlet charset = '';\n\tlet base64 = false;\n\tconst type = meta[0] || 'text/plain';\n\tlet typeFull = type;\n\tfor (let i = 1; i < meta.length; i++) {\n\t\tif (meta[i] === 'base64') {\n\t\t\tbase64 = true;\n\t\t} else if(meta[i]) {\n\t\t\ttypeFull += `;${  meta[i]}`;\n\t\t\tif (meta[i].indexOf('charset=') === 0) {\n\t\t\t\tcharset = meta[i].substring(8);\n\t\t\t}\n\t\t}\n\t}\n\t// defaults to US-ASCII only if type is not provided\n\tif (!meta[0] && !charset.length) {\n\t\ttypeFull += ';charset=US-ASCII';\n\t\tcharset = 'US-ASCII';\n\t}\n\n\t// get the encoded data portion and decode URI-encoded chars\n\tconst encoding = base64 ? 'base64' : 'ascii';\n\tconst data = unescape(uri.substring(firstComma + 1));\n\tconst buffer = Buffer.from(data, encoding) as MimeBuffer;\n\n\t// set `.type` and `.typeFull` properties to MIME type\n\tbuffer.type = type;\n\tbuffer.typeFull = typeFull;\n\n\t// set the `.charset` property\n\tbuffer.charset = charset;\n\n\treturn buffer;\n}\n\nexport default dataUriToBuffer;\n","export function noop(): undefined {\n  return undefined;\n}\n","import { noop } from '../../utils';\nimport { AssertionError } from '../../stub/assert';\n\nexport function typeIsObject(x: any): x is object {\n  return (typeof x === 'object' && x !== null) || typeof x === 'function';\n}\n\nexport const rethrowAssertionErrorRejection: (e: any) => void =\n  DEBUG ? e => {\n    // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n    // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n    // expect any errors, but assertion errors are always problematic.\n    if (e && e instanceof AssertionError) {\n      setTimeout(() => {\n        throw e;\n      }, 0);\n    }\n  } : noop;\n\nexport function setFunctionName(fn: Function, name: string): void {\n  try {\n    Object.defineProperty(fn, 'name', {\n      value: name,\n      configurable: true\n    });\n  } catch {\n    // This property is non-configurable in older browsers, so ignore if this throws.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#browser_compatibility\n  }\n}\n","import { rethrowAssertionErrorRejection } from './miscellaneous';\nimport assert from '../../stub/assert';\n\nconst originalPromise = Promise;\nconst originalPromiseThen = Promise.prototype.then;\nconst originalPromiseReject = Promise.reject.bind(originalPromise);\n\n// https://webidl.spec.whatwg.org/#a-new-promise\nexport function newPromise<T>(executor: (\n  resolve: (value: T | PromiseLike<T>) => void,\n  reject: (reason?: any) => void\n) => void): Promise<T> {\n  return new originalPromise(executor);\n}\n\n// https://webidl.spec.whatwg.org/#a-promise-resolved-with\nexport function promiseResolvedWith<T>(value: T | PromiseLike<T>): Promise<T> {\n  return newPromise(resolve => resolve(value));\n}\n\n// https://webidl.spec.whatwg.org/#a-promise-rejected-with\nexport function promiseRejectedWith<T = never>(reason: any): Promise<T> {\n  return originalPromiseReject(reason);\n}\n\nexport function PerformPromiseThen<T, TResult1 = T, TResult2 = never>(\n  promise: Promise<T>,\n  onFulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>,\n  onRejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2> {\n  // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an\n  // approximation.\n  return originalPromiseThen.call(promise, onFulfilled, onRejected) as Promise<TResult1 | TResult2>;\n}\n\n// Bluebird logs a warning when a promise is created within a fulfillment handler, but then isn't returned\n// from that handler. To prevent this, return null instead of void from all handlers.\n// http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-was-not-returned-from-it\nexport function uponPromise<T>(\n  promise: Promise<T>,\n  onFulfilled?: (value: T) => null | PromiseLike<null>,\n  onRejected?: (reason: any) => null | PromiseLike<null>): void {\n  PerformPromiseThen(\n    PerformPromiseThen(promise, onFulfilled, onRejected),\n    undefined,\n    rethrowAssertionErrorRejection\n  );\n}\n\nexport function uponFulfillment<T>(promise: Promise<T>, onFulfilled: (value: T) => null | PromiseLike<null>): void {\n  uponPromise(promise, onFulfilled);\n}\n\nexport function uponRejection(promise: Promise<unknown>, onRejected: (reason: any) => null | PromiseLike<null>): void {\n  uponPromise(promise, undefined, onRejected);\n}\n\nexport function transformPromiseWith<T, TResult1 = T, TResult2 = never>(\n  promise: Promise<T>,\n  fulfillmentHandler?: (value: T) => TResult1 | PromiseLike<TResult1>,\n  rejectionHandler?: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2> {\n  return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n}\n\nexport function setPromiseIsHandledToTrue(promise: Promise<unknown>): void {\n  PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n}\n\nlet _queueMicrotask: (callback: () => void) => void = callback => {\n  if (typeof queueMicrotask === 'function') {\n    _queueMicrotask = queueMicrotask;\n  } else {\n    const resolvedPromise = promiseResolvedWith(undefined);\n    _queueMicrotask = cb => PerformPromiseThen(resolvedPromise, cb);\n  }\n  return _queueMicrotask(callback);\n};\n\nexport { _queueMicrotask as queueMicrotask };\n\nexport function reflectCall<T, A extends any[], R>(F: (this: T, ...fnArgs: A) => R, V: T, args: A): R {\n  if (typeof F !== 'function') {\n    throw new TypeError('Argument is not a function');\n  }\n  return Function.prototype.apply.call(F, V, args);\n}\n\nexport function promiseCall<T, A extends any[], R>(F: (this: T, ...fnArgs: A) => R | PromiseLike<R>,\n                                                   V: T,\n                                                   args: A): Promise<R> {\n  assert(typeof F === 'function');\n  assert(V !== undefined);\n  assert(Array.isArray(args));\n  try {\n    return promiseResolvedWith(reflectCall(F, V, args));\n  } catch (value) {\n    return promiseRejectedWith(value);\n  }\n}\n","import assert from '../stub/assert';\n\n// Original from Chromium\n// https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js\n\nconst QUEUE_MAX_ARRAY_SIZE = 16384;\n\ninterface Node<T> {\n  _elements: T[];\n  _next: Node<T> | undefined;\n}\n\n/**\n * Simple queue structure.\n *\n * Avoids scalability issues with using a packed array directly by using\n * multiple arrays in a linked list and keeping the array size bounded.\n */\nexport class SimpleQueue<T> {\n  private _front: Node<T>;\n  private _back: Node<T>;\n  private _cursor = 0;\n  private _size = 0;\n\n  constructor() {\n    // _front and _back are always defined.\n    this._front = {\n      _elements: [],\n      _next: undefined\n    };\n    this._back = this._front;\n    // The cursor is used to avoid calling Array.shift().\n    // It contains the index of the front element of the array inside the\n    // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE).\n    this._cursor = 0;\n    // When there is only one node, size === elements.length - cursor.\n    this._size = 0;\n  }\n\n  get length(): number {\n    return this._size;\n  }\n\n  // For exception safety, this method is structured in order:\n  // 1. Read state\n  // 2. Calculate required state mutations\n  // 3. Perform state mutations\n  push(element: T): void {\n    const oldBack = this._back;\n    let newBack = oldBack;\n    assert(oldBack._next === undefined);\n    if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n      newBack = {\n        _elements: [],\n        _next: undefined\n      };\n    }\n\n    // push() is the mutation most likely to throw an exception, so it\n    // goes first.\n    oldBack._elements.push(element);\n    if (newBack !== oldBack) {\n      this._back = newBack;\n      oldBack._next = newBack;\n    }\n    ++this._size;\n  }\n\n  // Like push(), shift() follows the read -> calculate -> mutate pattern for\n  // exception safety.\n  shift(): T {\n    assert(this._size > 0); // must not be called on an empty queue\n\n    const oldFront = this._front;\n    let newFront = oldFront;\n    const oldCursor = this._cursor;\n    let newCursor = oldCursor + 1;\n\n    const elements = oldFront._elements;\n    const element = elements[oldCursor];\n\n    if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n      assert(elements.length === QUEUE_MAX_ARRAY_SIZE);\n      assert(oldFront._next !== undefined);\n      newFront = oldFront._next!;\n      newCursor = 0;\n    }\n\n    // No mutations before this point.\n    --this._size;\n    this._cursor = newCursor;\n    if (oldFront !== newFront) {\n      this._front = newFront;\n    }\n\n    // Permit shifted element to be garbage collected.\n    elements[oldCursor] = undefined!;\n\n    return element;\n  }\n\n  // The tricky thing about forEach() is that it can be called\n  // re-entrantly. The queue may be mutated inside the callback. It is easy to\n  // see that push() within the callback has no negative effects since the end\n  // of the queue is checked for on every iteration. If shift() is called\n  // repeatedly within the callback then the next iteration may return an\n  // element that has been removed. In this case the callback will be called\n  // with undefined values until we either \"catch up\" with elements that still\n  // exist or reach the back of the queue.\n  forEach(callback: (element: T) => void): void {\n    let i = this._cursor;\n    let node = this._front;\n    let elements = node._elements;\n    while (i !== elements.length || node._next !== undefined) {\n      if (i === elements.length) {\n        assert(node._next !== undefined);\n        assert(i === QUEUE_MAX_ARRAY_SIZE);\n        node = node._next!;\n        elements = node._elements;\n        i = 0;\n        if (elements.length === 0) {\n          break;\n        }\n      }\n      callback(elements[i]);\n      ++i;\n    }\n  }\n\n  // Return the element that would be returned if shift() was called now,\n  // without modifying the queue.\n  peek(): T {\n    assert(this._size > 0); // must not be called on an empty queue\n\n    const front = this._front;\n    const cursor = this._cursor;\n    return front._elements[cursor];\n  }\n}\n","export const AbortSteps = Symbol('[[AbortSteps]]');\nexport const ErrorSteps = Symbol('[[ErrorSteps]]');\nexport const CancelSteps = Symbol('[[CancelSteps]]');\nexport const PullSteps = Symbol('[[PullSteps]]');\nexport const ReleaseSteps = Symbol('[[ReleaseSteps]]');\n","import assert from '../../stub/assert';\nimport { ReadableStream, ReadableStreamCancel, type ReadableStreamReader } from '../readable-stream';\nimport { newPromise, setPromiseIsHandledToTrue } from '../helpers/webidl';\nimport { ReleaseSteps } from '../abstract-ops/internal-methods';\n\nexport function ReadableStreamReaderGenericInitialize<R>(reader: ReadableStreamReader<R>, stream: ReadableStream<R>) {\n  reader._ownerReadableStream = stream;\n  stream._reader = reader;\n\n  if (stream._state === 'readable') {\n    defaultReaderClosedPromiseInitialize(reader);\n  } else if (stream._state === 'closed') {\n    defaultReaderClosedPromiseInitializeAsResolved(reader);\n  } else {\n    assert(stream._state === 'errored');\n\n    defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n  }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nexport function ReadableStreamReaderGenericCancel(reader: ReadableStreamReader<any>, reason: any): Promise<undefined> {\n  const stream = reader._ownerReadableStream;\n  assert(stream !== undefined);\n  return ReadableStreamCancel(stream, reason);\n}\n\nexport function ReadableStreamReaderGenericRelease(reader: ReadableStreamReader<any>) {\n  const stream = reader._ownerReadableStream;\n  assert(stream !== undefined);\n  assert(stream._reader === reader);\n\n  if (stream._state === 'readable') {\n    defaultReaderClosedPromiseReject(\n      reader,\n      new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n  } else {\n    defaultReaderClosedPromiseResetToRejected(\n      reader,\n      new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n  }\n\n  stream._readableStreamController[ReleaseSteps]();\n\n  stream._reader = undefined;\n  reader._ownerReadableStream = undefined!;\n}\n\n// Helper functions for the readers.\n\nexport function readerLockException(name: string): TypeError {\n  return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nexport function defaultReaderClosedPromiseInitialize(reader: ReadableStreamReader<any>) {\n  reader._closedPromise = newPromise((resolve, reject) => {\n    reader._closedPromise_resolve = resolve;\n    reader._closedPromise_reject = reject;\n  });\n}\n\nexport function defaultReaderClosedPromiseInitializeAsRejected(reader: ReadableStreamReader<any>, reason: any) {\n  defaultReaderClosedPromiseInitialize(reader);\n  defaultReaderClosedPromiseReject(reader, reason);\n}\n\nexport function defaultReaderClosedPromiseInitializeAsResolved(reader: ReadableStreamReader<any>) {\n  defaultReaderClosedPromiseInitialize(reader);\n  defaultReaderClosedPromiseResolve(reader);\n}\n\nexport function defaultReaderClosedPromiseReject(reader: ReadableStreamReader<any>, reason: any) {\n  if (reader._closedPromise_reject === undefined) {\n    return;\n  }\n\n  setPromiseIsHandledToTrue(reader._closedPromise);\n  reader._closedPromise_reject(reason);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nexport function defaultReaderClosedPromiseResetToRejected(reader: ReadableStreamReader<any>, reason: any) {\n  assert(reader._closedPromise_resolve === undefined);\n  assert(reader._closedPromise_reject === undefined);\n\n  defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n}\n\nexport function defaultReaderClosedPromiseResolve(reader: ReadableStreamReader<any>) {\n  if (reader._closedPromise_resolve === undefined) {\n    return;\n  }\n\n  reader._closedPromise_resolve(undefined);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n","/// <reference lib=\"es2015.core\" />\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\nconst NumberIsFinite: typeof Number.isFinite = Number.isFinite || function (x) {\n  return typeof x === 'number' && isFinite(x);\n};\n\nexport default NumberIsFinite;\n","/// <reference lib=\"es2015.core\" />\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill\nconst MathTrunc: typeof Math.trunc = Math.trunc || function (v) {\n  return v < 0 ? Math.ceil(v) : Math.floor(v);\n};\n\nexport default MathTrunc;\n","import NumberIsFinite from '../../stub/number-isfinite';\nimport MathTrunc from '../../stub/math-trunc';\n\n// https://heycam.github.io/webidl/#idl-dictionaries\nexport function isDictionary(x: any): x is object | null {\n  return typeof x === 'object' || typeof x === 'function';\n}\n\nexport function assertDictionary(obj: unknown,\n                                 context: string): asserts obj is object | null | undefined {\n  if (obj !== undefined && !isDictionary(obj)) {\n    throw new TypeError(`${context} is not an object.`);\n  }\n}\n\nexport type AnyFunction = (...args: any[]) => any;\n\n// https://heycam.github.io/webidl/#idl-callback-functions\nexport function assertFunction(x: unknown, context: string): asserts x is AnyFunction {\n  if (typeof x !== 'function') {\n    throw new TypeError(`${context} is not a function.`);\n  }\n}\n\n// https://heycam.github.io/webidl/#idl-object\nexport function isObject(x: any): x is object {\n  return (typeof x === 'object' && x !== null) || typeof x === 'function';\n}\n\nexport function assertObject(x: unknown,\n                             context: string): asserts x is object {\n  if (!isObject(x)) {\n    throw new TypeError(`${context} is not an object.`);\n  }\n}\n\nexport function assertRequiredArgument<T>(x: T | undefined,\n                                          position: number,\n                                          context: string): asserts x is T {\n  if (x === undefined) {\n    throw new TypeError(`Parameter ${position} is required in '${context}'.`);\n  }\n}\n\nexport function assertRequiredField<T>(x: T | undefined,\n                                       field: string,\n                                       context: string): asserts x is T {\n  if (x === undefined) {\n    throw new TypeError(`${field} is required in '${context}'.`);\n  }\n}\n\n// https://heycam.github.io/webidl/#idl-unrestricted-double\nexport function convertUnrestrictedDouble(value: unknown): number {\n  return Number(value);\n}\n\nfunction censorNegativeZero(x: number): number {\n  return x === 0 ? 0 : x;\n}\n\nfunction integerPart(x: number): number {\n  return censorNegativeZero(MathTrunc(x));\n}\n\n// https://heycam.github.io/webidl/#idl-unsigned-long-long\nexport function convertUnsignedLongLongWithEnforceRange(value: unknown, context: string): number {\n  const lowerBound = 0;\n  const upperBound = Number.MAX_SAFE_INTEGER;\n\n  let x = Number(value);\n  x = censorNegativeZero(x);\n\n  if (!NumberIsFinite(x)) {\n    throw new TypeError(`${context} is not a finite number`);\n  }\n\n  x = integerPart(x);\n\n  if (x < lowerBound || x > upperBound) {\n    throw new TypeError(`${context} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`);\n  }\n\n  if (!NumberIsFinite(x) || x === 0) {\n    return 0;\n  }\n\n  // TODO Use BigInt if supported?\n  // let xBigInt = BigInt(integerPart(x));\n  // xBigInt = BigInt.asUintN(64, xBigInt);\n  // return Number(xBigInt);\n\n  return x;\n}\n","import { IsReadableStream, ReadableStream } from '../readable-stream';\n\nexport function assertReadableStream(x: unknown, context: string): asserts x is ReadableStream {\n  if (!IsReadableStream(x)) {\n    throw new TypeError(`${context} is not a ReadableStream.`);\n  }\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport {\n  ReadableStreamReaderGenericCancel,\n  ReadableStreamReaderGenericInitialize,\n  ReadableStreamReaderGenericRelease,\n  readerLockException\n} from './generic-reader';\nimport { IsReadableStreamLocked, ReadableStream } from '../readable-stream';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport { PullSteps } from '../abstract-ops/internal-methods';\nimport { newPromise, promiseRejectedWith } from '../helpers/webidl';\nimport { assertRequiredArgument } from '../validators/basic';\nimport { assertReadableStream } from '../validators/readable-stream';\n\n/**\n * A result returned by {@link ReadableStreamDefaultReader.read}.\n *\n * @public\n */\nexport type ReadableStreamDefaultReadResult<T> = {\n  done: false;\n  value: T;\n} | {\n  done: true;\n  value?: undefined;\n}\n\n// Abstract operations for the ReadableStream.\n\nexport function AcquireReadableStreamDefaultReader<R>(stream: ReadableStream): ReadableStreamDefaultReader<R> {\n  return new ReadableStreamDefaultReader(stream);\n}\n\n// ReadableStream API exposed for controllers.\n\nexport function ReadableStreamAddReadRequest<R>(stream: ReadableStream<R>,\n                                                readRequest: ReadRequest<R>): void {\n  assert(IsReadableStreamDefaultReader(stream._reader));\n  assert(stream._state === 'readable');\n\n  (stream._reader! as ReadableStreamDefaultReader<R>)._readRequests.push(readRequest);\n}\n\nexport function ReadableStreamFulfillReadRequest<R>(stream: ReadableStream<R>, chunk: R | undefined, done: boolean) {\n  const reader = stream._reader as ReadableStreamDefaultReader<R>;\n\n  assert(reader._readRequests.length > 0);\n\n  const readRequest = reader._readRequests.shift()!;\n  if (done) {\n    readRequest._closeSteps();\n  } else {\n    readRequest._chunkSteps(chunk!);\n  }\n}\n\nexport function ReadableStreamGetNumReadRequests<R>(stream: ReadableStream<R>): number {\n  return (stream._reader as ReadableStreamDefaultReader<R>)._readRequests.length;\n}\n\nexport function ReadableStreamHasDefaultReader(stream: ReadableStream): boolean {\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (!IsReadableStreamDefaultReader(reader)) {\n    return false;\n  }\n\n  return true;\n}\n\n// Readers\n\nexport interface ReadRequest<R> {\n  _chunkSteps(chunk: R): void;\n\n  _closeSteps(): void;\n\n  _errorSteps(e: any): void;\n}\n\n/**\n * A default reader vended by a {@link ReadableStream}.\n *\n * @public\n */\nexport class ReadableStreamDefaultReader<R = any> {\n  /** @internal */\n  _ownerReadableStream!: ReadableStream<R>;\n  /** @internal */\n  _closedPromise!: Promise<undefined>;\n  /** @internal */\n  _closedPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _closedPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _readRequests: SimpleQueue<ReadRequest<R>>;\n\n  constructor(stream: ReadableStream<R>) {\n    assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader');\n    assertReadableStream(stream, 'First parameter');\n\n    if (IsReadableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readRequests = new SimpleQueue();\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the stream becomes closed,\n   * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing.\n   */\n  get closed(): Promise<undefined> {\n    if (!IsReadableStreamDefaultReader(this)) {\n      return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n    }\n\n    return this._closedPromise;\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n   */\n  cancel(reason: any = undefined): Promise<void> {\n    if (!IsReadableStreamDefaultReader(this)) {\n      return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('cancel'));\n    }\n\n    return ReadableStreamReaderGenericCancel(this, reason);\n  }\n\n  /**\n   * Returns a promise that allows access to the next chunk from the stream's internal queue, if available.\n   *\n   * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n   */\n  read(): Promise<ReadableStreamDefaultReadResult<R>> {\n    if (!IsReadableStreamDefaultReader(this)) {\n      return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('read from'));\n    }\n\n    let resolvePromise!: (result: ReadableStreamDefaultReadResult<R>) => void;\n    let rejectPromise!: (reason: any) => void;\n    const promise = newPromise<ReadableStreamDefaultReadResult<R>>((resolve, reject) => {\n      resolvePromise = resolve;\n      rejectPromise = reject;\n    });\n    const readRequest: ReadRequest<R> = {\n      _chunkSteps: chunk => resolvePromise({ value: chunk, done: false }),\n      _closeSteps: () => resolvePromise({ value: undefined, done: true }),\n      _errorSteps: e => rejectPromise(e)\n    };\n    ReadableStreamDefaultReaderRead(this, readRequest);\n    return promise;\n  }\n\n  /**\n   * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n   * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n   * from now on; otherwise, the reader will appear closed.\n   *\n   * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n   * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to\n   * do so will throw a `TypeError` and leave the reader locked to the stream.\n   */\n  releaseLock(): void {\n    if (!IsReadableStreamDefaultReader(this)) {\n      throw defaultReaderBrandCheckException('releaseLock');\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return;\n    }\n\n    ReadableStreamDefaultReaderRelease(this);\n  }\n}\n\nObject.defineProperties(ReadableStreamDefaultReader.prototype, {\n  cancel: { enumerable: true },\n  read: { enumerable: true },\n  releaseLock: { enumerable: true },\n  closed: { enumerable: true }\n});\nsetFunctionName(ReadableStreamDefaultReader.prototype.cancel, 'cancel');\nsetFunctionName(ReadableStreamDefaultReader.prototype.read, 'read');\nsetFunctionName(ReadableStreamDefaultReader.prototype.releaseLock, 'releaseLock');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamDefaultReader.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamDefaultReader',\n    configurable: true\n  });\n}\n\n// Abstract operations for the readers.\n\nexport function IsReadableStreamDefaultReader<R = any>(x: any): x is ReadableStreamDefaultReader<R> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamDefaultReader;\n}\n\nexport function ReadableStreamDefaultReaderRead<R>(reader: ReadableStreamDefaultReader<R>,\n                                                   readRequest: ReadRequest<R>): void {\n  const stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    readRequest._closeSteps();\n  } else if (stream._state === 'errored') {\n    readRequest._errorSteps(stream._storedError);\n  } else {\n    assert(stream._state === 'readable');\n    stream._readableStreamController[PullSteps](readRequest as ReadRequest<any>);\n  }\n}\n\nexport function ReadableStreamDefaultReaderRelease(reader: ReadableStreamDefaultReader) {\n  ReadableStreamReaderGenericRelease(reader);\n  const e = new TypeError('Reader was released');\n  ReadableStreamDefaultReaderErrorReadRequests(reader, e);\n}\n\nexport function ReadableStreamDefaultReaderErrorReadRequests(reader: ReadableStreamDefaultReader, e: any) {\n  const readRequests = reader._readRequests;\n  reader._readRequests = new SimpleQueue();\n  readRequests.forEach(readRequest => {\n    readRequest._errorSteps(e);\n  });\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`);\n}\n","/// <reference lib=\"es2018.asynciterable\" />\n\n/* eslint-disable @typescript-eslint/no-empty-function */\nexport const AsyncIteratorPrototype: AsyncIterable<any> =\n  Object.getPrototypeOf(Object.getPrototypeOf(async function* (): AsyncIterableIterator<any> {}).prototype);\n","/// <reference lib=\"es2018.asynciterable\" />\n\nimport { ReadableStream } from '../readable-stream';\nimport {\n  AcquireReadableStreamDefaultReader,\n  ReadableStreamDefaultReader,\n  ReadableStreamDefaultReaderRead,\n  type ReadableStreamDefaultReadResult,\n  type ReadRequest\n} from './default-reader';\nimport { ReadableStreamReaderGenericCancel, ReadableStreamReaderGenericRelease } from './generic-reader';\nimport assert from '../../stub/assert';\nimport { AsyncIteratorPrototype } from '@@target/stub/async-iterator-prototype';\nimport { typeIsObject } from '../helpers/miscellaneous';\nimport {\n  newPromise,\n  promiseRejectedWith,\n  promiseResolvedWith,\n  queueMicrotask,\n  transformPromiseWith\n} from '../helpers/webidl';\n\n/**\n * An async iterator returned by {@link ReadableStream.values}.\n *\n * @public\n */\nexport interface ReadableStreamAsyncIterator<R> extends AsyncIterableIterator<R> {\n  next(): Promise<IteratorResult<R, undefined>>;\n\n  return(value?: any): Promise<IteratorResult<any>>;\n}\n\nexport class ReadableStreamAsyncIteratorImpl<R> {\n  private readonly _reader: ReadableStreamDefaultReader<R>;\n  private readonly _preventCancel: boolean;\n  private _ongoingPromise: Promise<ReadableStreamDefaultReadResult<R>> | undefined = undefined;\n  private _isFinished = false;\n\n  constructor(reader: ReadableStreamDefaultReader<R>, preventCancel: boolean) {\n    this._reader = reader;\n    this._preventCancel = preventCancel;\n  }\n\n  next(): Promise<ReadableStreamDefaultReadResult<R>> {\n    const nextSteps = () => this._nextSteps();\n    this._ongoingPromise = this._ongoingPromise ?\n      transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) :\n      nextSteps();\n    return this._ongoingPromise;\n  }\n\n  return(value: any): Promise<ReadableStreamDefaultReadResult<any>> {\n    const returnSteps = () => this._returnSteps(value);\n    return this._ongoingPromise ?\n      transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) :\n      returnSteps();\n  }\n\n  private _nextSteps(): Promise<ReadableStreamDefaultReadResult<R>> {\n    if (this._isFinished) {\n      return Promise.resolve({ value: undefined, done: true });\n    }\n\n    const reader = this._reader;\n    assert(reader._ownerReadableStream !== undefined);\n\n    let resolvePromise!: (result: ReadableStreamDefaultReadResult<R>) => void;\n    let rejectPromise!: (reason: any) => void;\n    const promise = newPromise<ReadableStreamDefaultReadResult<R>>((resolve, reject) => {\n      resolvePromise = resolve;\n      rejectPromise = reject;\n    });\n    const readRequest: ReadRequest<R> = {\n      _chunkSteps: chunk => {\n        this._ongoingPromise = undefined;\n        // This needs to be delayed by one microtask, otherwise we stop pulling too early which breaks a test.\n        // FIXME Is this a bug in the specification, or in the test?\n        queueMicrotask(() => resolvePromise({ value: chunk, done: false }));\n      },\n      _closeSteps: () => {\n        this._ongoingPromise = undefined;\n        this._isFinished = true;\n        ReadableStreamReaderGenericRelease(reader);\n        resolvePromise({ value: undefined, done: true });\n      },\n      _errorSteps: reason => {\n        this._ongoingPromise = undefined;\n        this._isFinished = true;\n        ReadableStreamReaderGenericRelease(reader);\n        rejectPromise(reason);\n      }\n    };\n    ReadableStreamDefaultReaderRead(reader, readRequest);\n    return promise;\n  }\n\n  private _returnSteps(value: any): Promise<ReadableStreamDefaultReadResult<any>> {\n    if (this._isFinished) {\n      return Promise.resolve({ value, done: true });\n    }\n    this._isFinished = true;\n\n    const reader = this._reader;\n    assert(reader._ownerReadableStream !== undefined);\n    assert(reader._readRequests.length === 0);\n\n    if (!this._preventCancel) {\n      const result = ReadableStreamReaderGenericCancel(reader, value);\n      ReadableStreamReaderGenericRelease(reader);\n      return transformPromiseWith(result, () => ({ value, done: true }));\n    }\n\n    ReadableStreamReaderGenericRelease(reader);\n    return promiseResolvedWith({ value, done: true });\n  }\n}\n\ninterface ReadableStreamAsyncIteratorInstance<R> extends ReadableStreamAsyncIterator<R> {\n  /** @interal */\n  _asyncIteratorImpl: ReadableStreamAsyncIteratorImpl<R>;\n\n  next(): Promise<IteratorResult<R, undefined>>;\n\n  return(value?: any): Promise<IteratorResult<any>>;\n}\n\nconst ReadableStreamAsyncIteratorPrototype: ReadableStreamAsyncIteratorInstance<any> = {\n  next(this: ReadableStreamAsyncIteratorInstance<any>): Promise<ReadableStreamDefaultReadResult<any>> {\n    if (!IsReadableStreamAsyncIterator(this)) {\n      return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n    }\n    return this._asyncIteratorImpl.next();\n  },\n\n  return(this: ReadableStreamAsyncIteratorInstance<any>, value: any): Promise<ReadableStreamDefaultReadResult<any>> {\n    if (!IsReadableStreamAsyncIterator(this)) {\n      return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return'));\n    }\n    return this._asyncIteratorImpl.return(value);\n  }\n} as any;\nObject.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n\n// Abstract operations for the ReadableStream.\n\nexport function AcquireReadableStreamAsyncIterator<R>(stream: ReadableStream<R>,\n                                                      preventCancel: boolean): ReadableStreamAsyncIterator<R> {\n  const reader = AcquireReadableStreamDefaultReader<R>(stream);\n  const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);\n  const iterator: ReadableStreamAsyncIteratorInstance<R> = Object.create(ReadableStreamAsyncIteratorPrototype);\n  iterator._asyncIteratorImpl = impl;\n  return iterator;\n}\n\nfunction IsReadableStreamAsyncIterator<R = any>(x: any): x is ReadableStreamAsyncIterator<R> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {\n    return false;\n  }\n\n  try {\n    // noinspection SuspiciousTypeOfGuard\n    return (x as ReadableStreamAsyncIteratorInstance<any>)._asyncIteratorImpl instanceof\n      ReadableStreamAsyncIteratorImpl;\n  } catch {\n    return false;\n  }\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamAsyncIteratorBrandCheckException(name: string): TypeError {\n  return new TypeError(`ReadableStreamAsyncIterator.${name} can only be used on a ReadableSteamAsyncIterator`);\n}\n","/// <reference lib=\"es2015.core\" />\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill\nconst NumberIsNaN: typeof Number.isNaN = Number.isNaN || function (x) {\n  // eslint-disable-next-line no-self-compare\n  return x !== x;\n};\n\nexport default NumberIsNaN;\n","import { reflectCall } from 'lib/helpers/webidl';\nimport { typeIsObject } from '../helpers/miscellaneous';\nimport assert from '../../stub/assert';\n\ndeclare global {\n  interface ArrayBuffer {\n    readonly detached: boolean;\n\n    transfer(): ArrayBuffer;\n  }\n\n  function structuredClone<T>(value: T, options: { transfer: ArrayBuffer[] }): T;\n}\n\nexport function CreateArrayFromList<T extends any[]>(elements: T): T {\n  // We use arrays to represent lists, so this is basically a no-op.\n  // Do a slice though just in case we happen to depend on the unique-ness.\n  return elements.slice() as T;\n}\n\nexport function CopyDataBlockBytes(dest: ArrayBuffer,\n                                   destOffset: number,\n                                   src: ArrayBuffer,\n                                   srcOffset: number,\n                                   n: number) {\n  new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n}\n\nexport let TransferArrayBuffer = (O: ArrayBuffer): ArrayBuffer => {\n  if (typeof O.transfer === 'function') {\n    TransferArrayBuffer = buffer => buffer.transfer();\n  } else if (typeof structuredClone === 'function') {\n    TransferArrayBuffer = buffer => structuredClone(buffer, { transfer: [buffer] });\n  } else {\n    // Not implemented correctly\n    TransferArrayBuffer = buffer => buffer;\n  }\n  return TransferArrayBuffer(O);\n};\n\nexport function CanTransferArrayBuffer(O: ArrayBuffer): boolean {\n  return !IsDetachedBuffer(O);\n}\n\nexport let IsDetachedBuffer = (O: ArrayBuffer): boolean => {\n  if (typeof O.detached === 'boolean') {\n    IsDetachedBuffer = buffer => buffer.detached;\n  } else {\n    // Not implemented correctly\n    IsDetachedBuffer = buffer => buffer.byteLength === 0;\n  }\n  return IsDetachedBuffer(O);\n};\n\nexport function ArrayBufferSlice(buffer: ArrayBuffer, begin: number, end: number): ArrayBuffer {\n  // ArrayBuffer.prototype.slice is not available on IE10\n  // https://www.caniuse.com/mdn-javascript_builtins_arraybuffer_slice\n  if (buffer.slice) {\n    return buffer.slice(begin, end);\n  }\n  const length = end - begin;\n  const slice = new ArrayBuffer(length);\n  CopyDataBlockBytes(slice, 0, buffer, begin, length);\n  return slice;\n}\n\nexport type MethodName<T> = {\n  [P in keyof T]: T[P] extends Function | undefined ? P : never;\n}[keyof T];\n\nexport function GetMethod<T, K extends MethodName<T>>(receiver: T, prop: K): T[K] | undefined {\n  const func = receiver[prop];\n  if (func === undefined || func === null) {\n    return undefined;\n  }\n  if (typeof func !== 'function') {\n    throw new TypeError(`${String(prop)} is not a function`);\n  }\n  return func;\n}\n\nexport interface SyncIteratorRecord<T> {\n  iterator: Iterator<T>,\n  nextMethod: Iterator<T>['next'],\n  done: boolean;\n}\n\nexport interface AsyncIteratorRecord<T> {\n  iterator: AsyncIterator<T>,\n  nextMethod: AsyncIterator<T>['next'],\n  done: boolean;\n}\n\nexport type SyncOrAsyncIteratorRecord<T> = SyncIteratorRecord<T> | AsyncIteratorRecord<T>;\n\nexport function CreateAsyncFromSyncIterator<T>(syncIteratorRecord: SyncIteratorRecord<T>): AsyncIteratorRecord<T> {\n  // Instead of re-implementing CreateAsyncFromSyncIterator and %AsyncFromSyncIteratorPrototype%,\n  // we use yield* inside an async generator function to achieve the same result.\n\n  // Wrap the sync iterator inside a sync iterable, so we can use it with yield*.\n  const syncIterable = {\n    [Symbol.iterator]: () => syncIteratorRecord.iterator\n  };\n  // Create an async generator function and immediately invoke it.\n  const asyncIterator = (async function* () {\n    return yield* syncIterable;\n  }());\n  // Return as an async iterator record.\n  const nextMethod = asyncIterator.next;\n  return { iterator: asyncIterator, nextMethod, done: false };\n}\n\n// Aligns with core-js/modules/es.symbol.async-iterator.js\nexport const SymbolAsyncIterator: (typeof Symbol)['asyncIterator'] =\n  Symbol.asyncIterator ??\n  Symbol.for?.('Symbol.asyncIterator') ??\n  '@@asyncIterator';\n\nexport type SyncOrAsyncIterable<T> = Iterable<T> | AsyncIterable<T>;\nexport type SyncOrAsyncIteratorMethod<T> = () => (Iterator<T> | AsyncIterator<T>);\n\nfunction GetIterator<T>(\n  obj: SyncOrAsyncIterable<T>,\n  hint: 'async',\n  method?: SyncOrAsyncIteratorMethod<T>\n): AsyncIteratorRecord<T>;\nfunction GetIterator<T>(\n  obj: Iterable<T>,\n  hint: 'sync',\n  method?: SyncOrAsyncIteratorMethod<T>\n): SyncIteratorRecord<T>;\nfunction GetIterator<T>(\n  obj: SyncOrAsyncIterable<T>,\n  hint = 'sync',\n  method?: SyncOrAsyncIteratorMethod<T>\n): SyncOrAsyncIteratorRecord<T> {\n  assert(hint === 'sync' || hint === 'async');\n  if (method === undefined) {\n    if (hint === 'async') {\n      method = GetMethod(obj as AsyncIterable<T>, SymbolAsyncIterator);\n      if (method === undefined) {\n        const syncMethod = GetMethod(obj as Iterable<T>, Symbol.iterator);\n        const syncIteratorRecord = GetIterator(obj as Iterable<T>, 'sync', syncMethod);\n        return CreateAsyncFromSyncIterator(syncIteratorRecord);\n      }\n    } else {\n      method = GetMethod(obj as Iterable<T>, Symbol.iterator);\n    }\n  }\n  if (method === undefined) {\n    throw new TypeError('The object is not iterable');\n  }\n  const iterator = reflectCall(method, obj, []);\n  if (!typeIsObject(iterator)) {\n    throw new TypeError('The iterator method must return an object');\n  }\n  const nextMethod = iterator.next;\n  return { iterator, nextMethod, done: false } as SyncOrAsyncIteratorRecord<T>;\n}\n\nexport { GetIterator };\n\nexport function IteratorNext<T>(iteratorRecord: AsyncIteratorRecord<T>): Promise<IteratorResult<T>> {\n  const result = reflectCall(iteratorRecord.nextMethod, iteratorRecord.iterator, []);\n  if (!typeIsObject(result)) {\n    throw new TypeError('The iterator.next() method must return an object');\n  }\n  return result;\n}\n\nexport function IteratorComplete<TReturn>(\n  iterResult: IteratorResult<unknown, TReturn>\n): iterResult is IteratorReturnResult<TReturn> {\n  assert(typeIsObject(iterResult));\n  return Boolean(iterResult.done);\n}\n\nexport function IteratorValue<T>(iterResult: IteratorYieldResult<T>): T {\n  assert(typeIsObject(iterResult));\n  return iterResult.value;\n}\n","import NumberIsNaN from '../../stub/number-isnan';\nimport { ArrayBufferSlice } from './ecmascript';\nimport type { NonShared } from '../helpers/array-buffer-view';\n\nexport function IsNonNegativeNumber(v: number): boolean {\n  if (typeof v !== 'number') {\n    return false;\n  }\n\n  if (NumberIsNaN(v)) {\n    return false;\n  }\n\n  if (v < 0) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function CloneAsUint8Array(O: NonShared<ArrayBufferView>): NonShared<Uint8Array> {\n  const buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength);\n  return new Uint8Array(buffer) as NonShared<Uint8Array>;\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport { IsNonNegativeNumber } from './miscellaneous';\n\nexport interface QueueContainer<T> {\n  _queue: SimpleQueue<T>;\n  _queueTotalSize: number;\n}\n\nexport interface QueuePair<T> {\n  value: T;\n  size: number;\n}\n\nexport function DequeueValue<T>(container: QueueContainer<QueuePair<T>>): T {\n  assert('_queue' in container && '_queueTotalSize' in container);\n  assert(container._queue.length > 0);\n\n  const pair = container._queue.shift()!;\n  container._queueTotalSize -= pair.size;\n  if (container._queueTotalSize < 0) {\n    container._queueTotalSize = 0;\n  }\n\n  return pair.value;\n}\n\nexport function EnqueueValueWithSize<T>(container: QueueContainer<QueuePair<T>>, value: T, size: number) {\n  assert('_queue' in container && '_queueTotalSize' in container);\n\n  if (!IsNonNegativeNumber(size) || size === Infinity) {\n    throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n  }\n\n  container._queue.push({ value, size });\n  container._queueTotalSize += size;\n}\n\nexport function PeekQueueValue<T>(container: QueueContainer<QueuePair<T>>): T {\n  assert('_queue' in container && '_queueTotalSize' in container);\n  assert(container._queue.length > 0);\n\n  const pair = container._queue.peek();\n  return pair.value;\n}\n\nexport function ResetQueue<T>(container: QueueContainer<T>) {\n  assert('_queue' in container && '_queueTotalSize' in container);\n\n  container._queue = new SimpleQueue<T>();\n  container._queueTotalSize = 0;\n}\n","export type TypedArray =\n  | Int8Array\n  | Uint8Array\n  | Uint8ClampedArray\n  | Int16Array\n  | Uint16Array\n  | Int32Array\n  | Uint32Array\n  | Float32Array\n  | Float64Array;\n\nexport type NonShared<T extends ArrayBufferView> = T & {\n  buffer: ArrayBuffer;\n}\n\nexport interface ArrayBufferViewConstructor<T extends ArrayBufferView = ArrayBufferView> {\n  new(buffer: ArrayBuffer, byteOffset: number, length?: number): T;\n\n  readonly prototype: T;\n}\n\nexport interface TypedArrayConstructor<T extends TypedArray = TypedArray> extends ArrayBufferViewConstructor<T> {\n  readonly BYTES_PER_ELEMENT: number;\n}\n\nexport type DataViewConstructor = ArrayBufferViewConstructor<DataView>;\n\nfunction isDataViewConstructor(ctor: Function): ctor is DataViewConstructor {\n  return ctor === DataView;\n}\n\nexport function isDataView(view: ArrayBufferView): view is DataView {\n  return isDataViewConstructor(view.constructor);\n}\n\nexport function arrayBufferViewElementSize<T extends ArrayBufferView>(ctor: ArrayBufferViewConstructor<T>): number {\n  if (isDataViewConstructor(ctor)) {\n    return 1;\n  }\n  return (ctor as unknown as TypedArrayConstructor).BYTES_PER_ELEMENT;\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport { ResetQueue } from '../abstract-ops/queue-with-sizes';\nimport {\n  IsReadableStreamDefaultReader,\n  ReadableStreamAddReadRequest,\n  ReadableStreamFulfillReadRequest,\n  ReadableStreamGetNumReadRequests,\n  ReadableStreamHasDefaultReader,\n  type ReadRequest\n} from './default-reader';\nimport {\n  ReadableStreamAddReadIntoRequest,\n  ReadableStreamFulfillReadIntoRequest,\n  ReadableStreamGetNumReadIntoRequests,\n  ReadableStreamHasBYOBReader,\n  type ReadIntoRequest\n} from './byob-reader';\nimport NumberIsInteger from '../../stub/number-isinteger';\nimport {\n  IsReadableStreamLocked,\n  type ReadableByteStream,\n  ReadableStreamClose,\n  ReadableStreamError\n} from '../readable-stream';\nimport type { ValidatedUnderlyingByteSource } from './underlying-source';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport {\n  ArrayBufferSlice,\n  CanTransferArrayBuffer,\n  CopyDataBlockBytes,\n  IsDetachedBuffer,\n  TransferArrayBuffer\n} from '../abstract-ops/ecmascript';\nimport { CancelSteps, PullSteps, ReleaseSteps } from '../abstract-ops/internal-methods';\nimport { promiseResolvedWith, uponPromise } from '../helpers/webidl';\nimport { assertRequiredArgument, convertUnsignedLongLongWithEnforceRange } from '../validators/basic';\nimport {\n  type ArrayBufferViewConstructor,\n  arrayBufferViewElementSize,\n  type NonShared,\n  type TypedArrayConstructor\n} from '../helpers/array-buffer-view';\n\n/**\n * A pull-into request in a {@link ReadableByteStreamController}.\n *\n * @public\n */\nexport class ReadableStreamBYOBRequest {\n  /** @internal */\n  _associatedReadableByteStreamController!: ReadableByteStreamController;\n  /** @internal */\n  _view!: NonShared<ArrayBufferView> | null;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the view for writing in to, or `null` if the BYOB request has already been responded to.\n   */\n  get view(): ArrayBufferView | null {\n    if (!IsReadableStreamBYOBRequest(this)) {\n      throw byobRequestBrandCheckException('view');\n    }\n\n    return this._view;\n  }\n\n  /**\n   * Indicates to the associated readable byte stream that `bytesWritten` bytes were written into\n   * {@link ReadableStreamBYOBRequest.view | view}, causing the result be surfaced to the consumer.\n   *\n   * After this method is called, {@link ReadableStreamBYOBRequest.view | view} will be transferred and no longer\n   * modifiable.\n   */\n  respond(bytesWritten: number): void;\n  respond(bytesWritten: number | undefined): void {\n    if (!IsReadableStreamBYOBRequest(this)) {\n      throw byobRequestBrandCheckException('respond');\n    }\n    assertRequiredArgument(bytesWritten, 1, 'respond');\n    bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter');\n\n    if (this._associatedReadableByteStreamController === undefined) {\n      throw new TypeError('This BYOB request has been invalidated');\n    }\n\n    if (IsDetachedBuffer(this._view!.buffer)) {\n      throw new TypeError(`The BYOB request's buffer has been detached and so cannot be used as a response`);\n    }\n\n    assert(this._view!.byteLength > 0);\n    assert(this._view!.buffer.byteLength > 0);\n\n    ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n  }\n\n  /**\n   * Indicates to the associated readable byte stream that instead of writing into\n   * {@link ReadableStreamBYOBRequest.view | view}, the underlying byte source is providing a new `ArrayBufferView`,\n   * which will be given to the consumer of the readable byte stream.\n   *\n   * After this method is called, `view` will be transferred and no longer modifiable.\n   */\n  respondWithNewView(view: ArrayBufferView): void;\n  respondWithNewView(view: NonShared<ArrayBufferView>): void {\n    if (!IsReadableStreamBYOBRequest(this)) {\n      throw byobRequestBrandCheckException('respondWithNewView');\n    }\n    assertRequiredArgument(view, 1, 'respondWithNewView');\n\n    if (!ArrayBuffer.isView(view)) {\n      throw new TypeError('You can only respond with array buffer views');\n    }\n\n    if (this._associatedReadableByteStreamController === undefined) {\n      throw new TypeError('This BYOB request has been invalidated');\n    }\n\n    if (IsDetachedBuffer(view.buffer)) {\n      throw new TypeError('The given view\\'s buffer has been detached and so cannot be used as a response');\n    }\n\n    ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n  }\n}\n\nObject.defineProperties(ReadableStreamBYOBRequest.prototype, {\n  respond: { enumerable: true },\n  respondWithNewView: { enumerable: true },\n  view: { enumerable: true }\n});\nsetFunctionName(ReadableStreamBYOBRequest.prototype.respond, 'respond');\nsetFunctionName(ReadableStreamBYOBRequest.prototype.respondWithNewView, 'respondWithNewView');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamBYOBRequest.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamBYOBRequest',\n    configurable: true\n  });\n}\n\ninterface ByteQueueElement {\n  buffer: ArrayBuffer;\n  byteOffset: number;\n  byteLength: number;\n}\n\ntype PullIntoDescriptor<T extends NonShared<ArrayBufferView> = NonShared<ArrayBufferView>> =\n  DefaultPullIntoDescriptor\n  | BYOBPullIntoDescriptor<T>;\n\ninterface DefaultPullIntoDescriptor {\n  buffer: ArrayBuffer;\n  bufferByteLength: number;\n  byteOffset: number;\n  byteLength: number;\n  bytesFilled: number;\n  minimumFill: number;\n  elementSize: number;\n  viewConstructor: TypedArrayConstructor<Uint8Array>;\n  readerType: 'default' | 'none';\n}\n\ninterface BYOBPullIntoDescriptor<T extends NonShared<ArrayBufferView> = NonShared<ArrayBufferView>> {\n  buffer: ArrayBuffer;\n  bufferByteLength: number;\n  byteOffset: number;\n  byteLength: number;\n  bytesFilled: number;\n  minimumFill: number;\n  elementSize: number;\n  viewConstructor: ArrayBufferViewConstructor<T>;\n  readerType: 'byob' | 'none';\n}\n\n/**\n * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue.\n *\n * @public\n */\nexport class ReadableByteStreamController {\n  /** @internal */\n  _controlledReadableByteStream!: ReadableByteStream;\n  /** @internal */\n  _queue!: SimpleQueue<ByteQueueElement>;\n  /** @internal */\n  _queueTotalSize!: number;\n  /** @internal */\n  _started!: boolean;\n  /** @internal */\n  _closeRequested!: boolean;\n  /** @internal */\n  _pullAgain!: boolean;\n  /** @internal */\n  _pulling !: boolean;\n  /** @internal */\n  _strategyHWM!: number;\n  /** @internal */\n  _pullAlgorithm!: () => Promise<void>;\n  /** @internal */\n  _cancelAlgorithm!: (reason: any) => Promise<void>;\n  /** @internal */\n  _autoAllocateChunkSize: number | undefined;\n  /** @internal */\n  _byobRequest: ReadableStreamBYOBRequest | null;\n  /** @internal */\n  _pendingPullIntos!: SimpleQueue<PullIntoDescriptor>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the current BYOB pull request, or `null` if there isn't one.\n   */\n  get byobRequest(): ReadableStreamBYOBRequest | null {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('byobRequest');\n    }\n\n    return ReadableByteStreamControllerGetBYOBRequest(this);\n  }\n\n  /**\n   * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n   * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure.\n   */\n  get desiredSize(): number | null {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('desiredSize');\n    }\n\n    return ReadableByteStreamControllerGetDesiredSize(this);\n  }\n\n  /**\n   * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n   * the stream, but once those are read, the stream will become closed.\n   */\n  close(): void {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('close');\n    }\n\n    if (this._closeRequested) {\n      throw new TypeError('The stream has already been closed; do not close it again!');\n    }\n\n    const state = this._controlledReadableByteStream._state;\n    if (state !== 'readable') {\n      throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be closed`);\n    }\n\n    ReadableByteStreamControllerClose(this);\n  }\n\n  /**\n   * Enqueues the given chunk chunk in the controlled readable stream.\n   * The chunk has to be an `ArrayBufferView` instance, or else a `TypeError` will be thrown.\n   */\n  enqueue(chunk: ArrayBufferView): void;\n  enqueue(chunk: NonShared<ArrayBufferView>): void {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('enqueue');\n    }\n\n    assertRequiredArgument(chunk, 1, 'enqueue');\n    if (!ArrayBuffer.isView(chunk)) {\n      throw new TypeError('chunk must be an array buffer view');\n    }\n    if (chunk.byteLength === 0) {\n      throw new TypeError('chunk must have non-zero byteLength');\n    }\n    if (chunk.buffer.byteLength === 0) {\n      throw new TypeError(`chunk's buffer must have non-zero byteLength`);\n    }\n\n    if (this._closeRequested) {\n      throw new TypeError('stream is closed or draining');\n    }\n\n    const state = this._controlledReadableByteStream._state;\n    if (state !== 'readable') {\n      throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be enqueued to`);\n    }\n\n    ReadableByteStreamControllerEnqueue(this, chunk);\n  }\n\n  /**\n   * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n   */\n  error(e: any = undefined): void {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('error');\n    }\n\n    ReadableByteStreamControllerError(this, e);\n  }\n\n  /** @internal */\n  [CancelSteps](reason: any): Promise<void> {\n    ReadableByteStreamControllerClearPendingPullIntos(this);\n\n    ResetQueue(this);\n\n    const result = this._cancelAlgorithm(reason);\n    ReadableByteStreamControllerClearAlgorithms(this);\n    return result;\n  }\n\n  /** @internal */\n  [PullSteps](readRequest: ReadRequest<NonShared<Uint8Array>>): void {\n    const stream = this._controlledReadableByteStream;\n    assert(ReadableStreamHasDefaultReader(stream));\n\n    if (this._queueTotalSize > 0) {\n      assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n      ReadableByteStreamControllerFillReadRequestFromQueue(this, readRequest);\n      return;\n    }\n\n    const autoAllocateChunkSize = this._autoAllocateChunkSize;\n    if (autoAllocateChunkSize !== undefined) {\n      let buffer: ArrayBuffer;\n      try {\n        buffer = new ArrayBuffer(autoAllocateChunkSize);\n      } catch (bufferE) {\n        readRequest._errorSteps(bufferE);\n        return;\n      }\n\n      const pullIntoDescriptor: DefaultPullIntoDescriptor = {\n        buffer,\n        bufferByteLength: autoAllocateChunkSize,\n        byteOffset: 0,\n        byteLength: autoAllocateChunkSize,\n        bytesFilled: 0,\n        minimumFill: 1,\n        elementSize: 1,\n        viewConstructor: Uint8Array,\n        readerType: 'default'\n      };\n\n      this._pendingPullIntos.push(pullIntoDescriptor);\n    }\n\n    ReadableStreamAddReadRequest(stream, readRequest);\n    ReadableByteStreamControllerCallPullIfNeeded(this);\n  }\n\n  /** @internal */\n  [ReleaseSteps](): void {\n    if (this._pendingPullIntos.length > 0) {\n      const firstPullInto = this._pendingPullIntos.peek();\n      firstPullInto.readerType = 'none';\n\n      this._pendingPullIntos = new SimpleQueue();\n      this._pendingPullIntos.push(firstPullInto);\n    }\n  }\n}\n\nObject.defineProperties(ReadableByteStreamController.prototype, {\n  close: { enumerable: true },\n  enqueue: { enumerable: true },\n  error: { enumerable: true },\n  byobRequest: { enumerable: true },\n  desiredSize: { enumerable: true }\n});\nsetFunctionName(ReadableByteStreamController.prototype.close, 'close');\nsetFunctionName(ReadableByteStreamController.prototype.enqueue, 'enqueue');\nsetFunctionName(ReadableByteStreamController.prototype.error, 'error');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableByteStreamController.prototype, Symbol.toStringTag, {\n    value: 'ReadableByteStreamController',\n    configurable: true\n  });\n}\n\n// Abstract operations for the ReadableByteStreamController.\n\nexport function IsReadableByteStreamController(x: any): x is ReadableByteStreamController {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n    return false;\n  }\n\n  return x instanceof ReadableByteStreamController;\n}\n\nfunction IsReadableStreamBYOBRequest(x: any): x is ReadableStreamBYOBRequest {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamBYOBRequest;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller: ReadableByteStreamController): void {\n  const shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n  if (!shouldPull) {\n    return;\n  }\n\n  if (controller._pulling) {\n    controller._pullAgain = true;\n    return;\n  }\n\n  assert(!controller._pullAgain);\n\n  controller._pulling = true;\n\n  // TODO: Test controller argument\n  const pullPromise = controller._pullAlgorithm();\n  uponPromise(\n    pullPromise,\n    () => {\n      controller._pulling = false;\n\n      if (controller._pullAgain) {\n        controller._pullAgain = false;\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n      }\n\n      return null;\n    },\n    e => {\n      ReadableByteStreamControllerError(controller, e);\n      return null;\n    }\n  );\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller: ReadableByteStreamController) {\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  controller._pendingPullIntos = new SimpleQueue();\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor<T extends NonShared<ArrayBufferView>>(\n  stream: ReadableByteStream,\n  pullIntoDescriptor: PullIntoDescriptor<T>\n) {\n  assert(stream._state !== 'errored');\n  assert(pullIntoDescriptor.readerType !== 'none');\n\n  let done = false;\n  if (stream._state === 'closed') {\n    assert(pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize === 0);\n    done = true;\n  }\n\n  const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor<T>(pullIntoDescriptor);\n  if (pullIntoDescriptor.readerType === 'default') {\n    ReadableStreamFulfillReadRequest(stream, filledView as unknown as NonShared<Uint8Array>, done);\n  } else {\n    assert(pullIntoDescriptor.readerType === 'byob');\n    ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n  }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor<T extends NonShared<ArrayBufferView>>(\n  pullIntoDescriptor: PullIntoDescriptor<T>\n): T {\n  const bytesFilled = pullIntoDescriptor.bytesFilled;\n  const elementSize = pullIntoDescriptor.elementSize;\n\n  assert(bytesFilled <= pullIntoDescriptor.byteLength);\n  assert(bytesFilled % elementSize === 0);\n\n  return new pullIntoDescriptor.viewConstructor(\n    pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize) as T;\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller: ReadableByteStreamController,\n                                                         buffer: ArrayBuffer,\n                                                         byteOffset: number,\n                                                         byteLength: number) {\n  controller._queue.push({ buffer, byteOffset, byteLength });\n  controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller: ReadableByteStreamController,\n                                                               buffer: ArrayBuffer,\n                                                               byteOffset: number,\n                                                               byteLength: number) {\n  let clonedChunk;\n  try {\n    clonedChunk = ArrayBufferSlice(buffer, byteOffset, byteOffset + byteLength);\n  } catch (cloneE) {\n    ReadableByteStreamControllerError(controller, cloneE);\n    throw cloneE;\n  }\n  ReadableByteStreamControllerEnqueueChunkToQueue(controller, clonedChunk, 0, byteLength);\n}\n\nfunction ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller: ReadableByteStreamController,\n                                                                    firstDescriptor: PullIntoDescriptor) {\n  assert(firstDescriptor.readerType === 'none');\n  if (firstDescriptor.bytesFilled > 0) {\n    ReadableByteStreamControllerEnqueueClonedChunkToQueue(\n      controller,\n      firstDescriptor.buffer,\n      firstDescriptor.byteOffset,\n      firstDescriptor.bytesFilled\n    );\n  }\n  ReadableByteStreamControllerShiftPendingPullInto(controller);\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller: ReadableByteStreamController,\n                                                                     pullIntoDescriptor: PullIntoDescriptor) {\n  const maxBytesToCopy = Math.min(controller._queueTotalSize,\n                                  pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n  const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n\n  let totalBytesToCopyRemaining = maxBytesToCopy;\n  let ready = false;\n  assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill);\n  const remainderBytes = maxBytesFilled % pullIntoDescriptor.elementSize;\n  const maxAlignedBytes = maxBytesFilled - remainderBytes;\n  // A descriptor for a read() request that is not yet filled up to its minimum length will stay at the head\n  // of the queue, so the underlying source can keep filling it.\n  if (maxAlignedBytes >= pullIntoDescriptor.minimumFill) {\n    totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n    ready = true;\n  }\n\n  const queue = controller._queue;\n\n  while (totalBytesToCopyRemaining > 0) {\n    const headOfQueue = queue.peek();\n\n    const bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n    const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n    if (headOfQueue.byteLength === bytesToCopy) {\n      queue.shift();\n    } else {\n      headOfQueue.byteOffset += bytesToCopy;\n      headOfQueue.byteLength -= bytesToCopy;\n    }\n    controller._queueTotalSize -= bytesToCopy;\n\n    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n    totalBytesToCopyRemaining -= bytesToCopy;\n  }\n\n  if (!ready) {\n    assert(controller._queueTotalSize === 0);\n    assert(pullIntoDescriptor.bytesFilled > 0);\n    assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill);\n  }\n\n  return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller: ReadableByteStreamController,\n                                                                size: number,\n                                                                pullIntoDescriptor: PullIntoDescriptor) {\n  assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos.peek() === pullIntoDescriptor);\n  assert(controller._byobRequest === null);\n  pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller: ReadableByteStreamController) {\n  assert(controller._controlledReadableByteStream._state === 'readable');\n\n  if (controller._queueTotalSize === 0 && controller._closeRequested) {\n    ReadableByteStreamControllerClearAlgorithms(controller);\n    ReadableStreamClose(controller._controlledReadableByteStream);\n  } else {\n    ReadableByteStreamControllerCallPullIfNeeded(controller);\n  }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller: ReadableByteStreamController) {\n  if (controller._byobRequest === null) {\n    return;\n  }\n\n  controller._byobRequest._associatedReadableByteStreamController = undefined!;\n  controller._byobRequest._view = null!;\n  controller._byobRequest = null;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller: ReadableByteStreamController) {\n  assert(!controller._closeRequested);\n\n  while (controller._pendingPullIntos.length > 0) {\n    if (controller._queueTotalSize === 0) {\n      return;\n    }\n\n    const pullIntoDescriptor = controller._pendingPullIntos.peek();\n    assert(pullIntoDescriptor.readerType !== 'none');\n\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n      ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n      ReadableByteStreamControllerCommitPullIntoDescriptor(\n        controller._controlledReadableByteStream,\n        pullIntoDescriptor\n      );\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller: ReadableByteStreamController) {\n  const reader = controller._controlledReadableByteStream._reader;\n  assert(IsReadableStreamDefaultReader(reader));\n  while (reader._readRequests.length > 0) {\n    if (controller._queueTotalSize === 0) {\n      return;\n    }\n    const readRequest = reader._readRequests.shift();\n    ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest);\n  }\n}\n\nexport function ReadableByteStreamControllerPullInto<T extends NonShared<ArrayBufferView>>(\n  controller: ReadableByteStreamController,\n  view: T,\n  min: number,\n  readIntoRequest: ReadIntoRequest<T>\n): void {\n  const stream = controller._controlledReadableByteStream;\n\n  const ctor = view.constructor as ArrayBufferViewConstructor<T>;\n  const elementSize = arrayBufferViewElementSize(ctor);\n\n  const { byteOffset, byteLength } = view;\n\n  const minimumFill = min * elementSize;\n  assert(minimumFill >= elementSize && minimumFill <= byteLength);\n  assert(minimumFill % elementSize === 0);\n\n  let buffer: ArrayBuffer;\n  try {\n    buffer = TransferArrayBuffer(view.buffer);\n  } catch (e) {\n    readIntoRequest._errorSteps(e);\n    return;\n  }\n\n  const pullIntoDescriptor: BYOBPullIntoDescriptor<T> = {\n    buffer,\n    bufferByteLength: buffer.byteLength,\n    byteOffset,\n    byteLength,\n    bytesFilled: 0,\n    minimumFill,\n    elementSize,\n    viewConstructor: ctor,\n    readerType: 'byob'\n  };\n\n  if (controller._pendingPullIntos.length > 0) {\n    controller._pendingPullIntos.push(pullIntoDescriptor);\n\n    // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n    // - No change happens on desiredSize\n    // - The source has already been notified of that there's at least 1 pending read(view)\n\n    ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n    return;\n  }\n\n  if (stream._state === 'closed') {\n    const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n    readIntoRequest._closeSteps(emptyView);\n    return;\n  }\n\n  if (controller._queueTotalSize > 0) {\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n      const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor<T>(pullIntoDescriptor);\n\n      ReadableByteStreamControllerHandleQueueDrain(controller);\n\n      readIntoRequest._chunkSteps(filledView);\n      return;\n    }\n\n    if (controller._closeRequested) {\n      const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      readIntoRequest._errorSteps(e);\n      return;\n    }\n  }\n\n  controller._pendingPullIntos.push(pullIntoDescriptor);\n\n  ReadableStreamAddReadIntoRequest<T>(stream, readIntoRequest);\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller: ReadableByteStreamController,\n                                                          firstDescriptor: PullIntoDescriptor) {\n  assert(firstDescriptor.bytesFilled % firstDescriptor.elementSize === 0);\n\n  if (firstDescriptor.readerType === 'none') {\n    ReadableByteStreamControllerShiftPendingPullInto(controller);\n  }\n\n  const stream = controller._controlledReadableByteStream;\n  if (ReadableStreamHasBYOBReader(stream)) {\n    while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n      const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n      ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller: ReadableByteStreamController,\n                                                            bytesWritten: number,\n                                                            pullIntoDescriptor: PullIntoDescriptor) {\n  assert(pullIntoDescriptor.bytesFilled + bytesWritten <= pullIntoDescriptor.byteLength);\n\n  ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n  if (pullIntoDescriptor.readerType === 'none') {\n    ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, pullIntoDescriptor);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n    return;\n  }\n\n  if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill) {\n    // A descriptor for a read() request that is not yet filled up to its minimum length will stay at the head\n    // of the queue, so the underlying source can keep filling it.\n    return;\n  }\n\n  ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n  const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n  if (remainderSize > 0) {\n    const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    ReadableByteStreamControllerEnqueueClonedChunkToQueue(\n      controller,\n      pullIntoDescriptor.buffer,\n      end - remainderSize,\n      remainderSize\n    );\n  }\n\n  pullIntoDescriptor.bytesFilled -= remainderSize;\n  ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n\n  ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller: ReadableByteStreamController, bytesWritten: number) {\n  const firstDescriptor = controller._pendingPullIntos.peek();\n  assert(CanTransferArrayBuffer(firstDescriptor.buffer));\n\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n\n  const state = controller._controlledReadableByteStream._state;\n  if (state === 'closed') {\n    assert(bytesWritten === 0);\n    ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n  } else {\n    assert(state === 'readable');\n    assert(bytesWritten > 0);\n    ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n  }\n\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(\n  controller: ReadableByteStreamController\n): PullIntoDescriptor {\n  assert(controller._byobRequest === null);\n  const descriptor = controller._pendingPullIntos.shift()!;\n  return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller: ReadableByteStreamController): boolean {\n  const stream = controller._controlledReadableByteStream;\n\n  if (stream._state !== 'readable') {\n    return false;\n  }\n\n  if (controller._closeRequested) {\n    return false;\n  }\n\n  if (!controller._started) {\n    return false;\n  }\n\n  if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n    return true;\n  }\n\n  const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n  assert(desiredSize !== null);\n  if (desiredSize! > 0) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction ReadableByteStreamControllerClearAlgorithms(controller: ReadableByteStreamController) {\n  controller._pullAlgorithm = undefined!;\n  controller._cancelAlgorithm = undefined!;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nexport function ReadableByteStreamControllerClose(controller: ReadableByteStreamController) {\n  const stream = controller._controlledReadableByteStream;\n\n  if (controller._closeRequested || stream._state !== 'readable') {\n    return;\n  }\n\n  if (controller._queueTotalSize > 0) {\n    controller._closeRequested = true;\n\n    return;\n  }\n\n  if (controller._pendingPullIntos.length > 0) {\n    const firstPendingPullInto = controller._pendingPullIntos.peek();\n    if (firstPendingPullInto.bytesFilled % firstPendingPullInto.elementSize !== 0) {\n      const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      throw e;\n    }\n  }\n\n  ReadableByteStreamControllerClearAlgorithms(controller);\n  ReadableStreamClose(stream);\n}\n\nexport function ReadableByteStreamControllerEnqueue(\n  controller: ReadableByteStreamController,\n  chunk: NonShared<ArrayBufferView>\n) {\n  const stream = controller._controlledReadableByteStream;\n\n  if (controller._closeRequested || stream._state !== 'readable') {\n    return;\n  }\n\n  const { buffer, byteOffset, byteLength } = chunk;\n  if (IsDetachedBuffer(buffer)) {\n    throw new TypeError('chunk\\'s buffer is detached and so cannot be enqueued');\n  }\n  const transferredBuffer = TransferArrayBuffer(buffer);\n\n  if (controller._pendingPullIntos.length > 0) {\n    const firstPendingPullInto = controller._pendingPullIntos.peek();\n    if (IsDetachedBuffer(firstPendingPullInto.buffer)) {\n      throw new TypeError(\n        'The BYOB request\\'s buffer has been detached and so cannot be filled with an enqueued chunk'\n      );\n    }\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer);\n    if (firstPendingPullInto.readerType === 'none') {\n      ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstPendingPullInto);\n    }\n  }\n\n  if (ReadableStreamHasDefaultReader(stream)) {\n    ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller);\n    if (ReadableStreamGetNumReadRequests(stream) === 0) {\n      assert(controller._pendingPullIntos.length === 0);\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    } else {\n      assert(controller._queue.length === 0);\n      if (controller._pendingPullIntos.length > 0) {\n        assert(controller._pendingPullIntos.peek().readerType === 'default');\n        ReadableByteStreamControllerShiftPendingPullInto(controller);\n      }\n      const transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n      ReadableStreamFulfillReadRequest(stream, transferredView as NonShared<Uint8Array>, false);\n    }\n  } else if (ReadableStreamHasBYOBReader(stream)) {\n    // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n  } else {\n    assert(!IsReadableStreamLocked(stream));\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n  }\n\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\n\nexport function ReadableByteStreamControllerError(controller: ReadableByteStreamController, e: any) {\n  const stream = controller._controlledReadableByteStream;\n\n  if (stream._state !== 'readable') {\n    return;\n  }\n\n  ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n  ResetQueue(controller);\n  ReadableByteStreamControllerClearAlgorithms(controller);\n  ReadableStreamError(stream, e);\n}\n\nexport function ReadableByteStreamControllerFillReadRequestFromQueue(\n  controller: ReadableByteStreamController,\n  readRequest: ReadRequest<NonShared<Uint8Array>>\n) {\n  assert(controller._queueTotalSize > 0);\n\n  const entry = controller._queue.shift();\n  controller._queueTotalSize -= entry.byteLength;\n\n  ReadableByteStreamControllerHandleQueueDrain(controller);\n\n  const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n  readRequest._chunkSteps(view as NonShared<Uint8Array>);\n}\n\nexport function ReadableByteStreamControllerGetBYOBRequest(\n  controller: ReadableByteStreamController\n): ReadableStreamBYOBRequest | null {\n  if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) {\n    const firstDescriptor = controller._pendingPullIntos.peek();\n    const view = new Uint8Array(firstDescriptor.buffer,\n                                firstDescriptor.byteOffset + firstDescriptor.bytesFilled,\n                                firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n    const byobRequest: ReadableStreamBYOBRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n    SetUpReadableStreamBYOBRequest(byobRequest, controller, view as NonShared<Uint8Array>);\n    controller._byobRequest = byobRequest;\n  }\n  return controller._byobRequest;\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller: ReadableByteStreamController): number | null {\n  const state = controller._controlledReadableByteStream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nexport function ReadableByteStreamControllerRespond(controller: ReadableByteStreamController, bytesWritten: number) {\n  assert(controller._pendingPullIntos.length > 0);\n\n  const firstDescriptor = controller._pendingPullIntos.peek();\n  const state = controller._controlledReadableByteStream._state;\n\n  if (state === 'closed') {\n    if (bytesWritten !== 0) {\n      throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n    }\n  } else {\n    assert(state === 'readable');\n    if (bytesWritten === 0) {\n      throw new TypeError('bytesWritten must be greater than 0 when calling respond() on a readable stream');\n    }\n    if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) {\n      throw new RangeError('bytesWritten out of range');\n    }\n  }\n\n  firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n  ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nexport function ReadableByteStreamControllerRespondWithNewView(controller: ReadableByteStreamController,\n                                                               view: NonShared<ArrayBufferView>) {\n  assert(controller._pendingPullIntos.length > 0);\n  assert(!IsDetachedBuffer(view.buffer));\n\n  const firstDescriptor = controller._pendingPullIntos.peek();\n  const state = controller._controlledReadableByteStream._state;\n\n  if (state === 'closed') {\n    if (view.byteLength !== 0) {\n      throw new TypeError('The view\\'s length must be 0 when calling respondWithNewView() on a closed stream');\n    }\n  } else {\n    assert(state === 'readable');\n    if (view.byteLength === 0) {\n      throw new TypeError(\n        'The view\\'s length must be greater than 0 when calling respondWithNewView() on a readable stream'\n      );\n    }\n  }\n\n  if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n    throw new RangeError('The region specified by view does not match byobRequest');\n  }\n  if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) {\n    throw new RangeError('The buffer of view has different capacity than byobRequest');\n  }\n  if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) {\n    throw new RangeError('The region specified by view is larger than byobRequest');\n  }\n\n  const viewByteLength = view.byteLength;\n  firstDescriptor.buffer = TransferArrayBuffer(view.buffer);\n  ReadableByteStreamControllerRespondInternal(controller, viewByteLength);\n}\n\nexport function SetUpReadableByteStreamController(stream: ReadableByteStream,\n                                                  controller: ReadableByteStreamController,\n                                                  startAlgorithm: () => void | PromiseLike<void>,\n                                                  pullAlgorithm: () => Promise<void>,\n                                                  cancelAlgorithm: (reason: any) => Promise<void>,\n                                                  highWaterMark: number,\n                                                  autoAllocateChunkSize: number | undefined) {\n  assert(stream._readableStreamController === undefined);\n  if (autoAllocateChunkSize !== undefined) {\n    assert(NumberIsInteger(autoAllocateChunkSize));\n    assert(autoAllocateChunkSize > 0);\n  }\n\n  controller._controlledReadableByteStream = stream;\n\n  controller._pullAgain = false;\n  controller._pulling = false;\n\n  controller._byobRequest = null;\n\n  // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n  controller._queue = controller._queueTotalSize = undefined!;\n  ResetQueue(controller);\n\n  controller._closeRequested = false;\n  controller._started = false;\n\n  controller._strategyHWM = highWaterMark;\n\n  controller._pullAlgorithm = pullAlgorithm;\n  controller._cancelAlgorithm = cancelAlgorithm;\n\n  controller._autoAllocateChunkSize = autoAllocateChunkSize;\n\n  controller._pendingPullIntos = new SimpleQueue();\n\n  stream._readableStreamController = controller;\n\n  const startResult = startAlgorithm();\n  uponPromise(\n    promiseResolvedWith(startResult),\n    () => {\n      controller._started = true;\n\n      assert(!controller._pulling);\n      assert(!controller._pullAgain);\n\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n      return null;\n    },\n    r => {\n      ReadableByteStreamControllerError(controller, r);\n      return null;\n    }\n  );\n}\n\nexport function SetUpReadableByteStreamControllerFromUnderlyingSource(\n  stream: ReadableByteStream,\n  underlyingByteSource: ValidatedUnderlyingByteSource,\n  highWaterMark: number\n) {\n  const controller: ReadableByteStreamController = Object.create(ReadableByteStreamController.prototype);\n\n  let startAlgorithm: () => void | PromiseLike<void>;\n  let pullAlgorithm: () => Promise<void>;\n  let cancelAlgorithm: (reason: any) => Promise<void>;\n\n  if (underlyingByteSource.start !== undefined) {\n    startAlgorithm = () => underlyingByteSource.start!(controller);\n  } else {\n    startAlgorithm = () => undefined;\n  }\n  if (underlyingByteSource.pull !== undefined) {\n    pullAlgorithm = () => underlyingByteSource.pull!(controller);\n  } else {\n    pullAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingByteSource.cancel !== undefined) {\n    cancelAlgorithm = reason => underlyingByteSource.cancel!(reason);\n  } else {\n    cancelAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n  if (autoAllocateChunkSize === 0) {\n    throw new TypeError('autoAllocateChunkSize must be greater than 0');\n  }\n\n  SetUpReadableByteStreamController(\n    stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize\n  );\n}\n\nfunction SetUpReadableStreamBYOBRequest(request: ReadableStreamBYOBRequest,\n                                        controller: ReadableByteStreamController,\n                                        view: NonShared<ArrayBufferView>) {\n  assert(IsReadableByteStreamController(controller));\n  assert(typeof view === 'object');\n  assert(ArrayBuffer.isView(view));\n  assert(!IsDetachedBuffer(view.buffer));\n  request._associatedReadableByteStreamController = controller;\n  request._view = view;\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamBYOBRequest.prototype.${name} can only be used on a ReadableStreamBYOBRequest`);\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`);\n}\n","import { assertDictionary, convertUnsignedLongLongWithEnforceRange } from './basic';\nimport type {\n  ReadableStreamBYOBReaderReadOptions,\n  ReadableStreamGetReaderOptions,\n  ValidatedReadableStreamBYOBReaderReadOptions\n} from '../readable-stream/reader-options';\n\nexport function convertReaderOptions(options: ReadableStreamGetReaderOptions | null | undefined,\n                                     context: string): ReadableStreamGetReaderOptions {\n  assertDictionary(options, context);\n  const mode = options?.mode;\n  return {\n    mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`)\n  };\n}\n\nfunction convertReadableStreamReaderMode(mode: string, context: string): 'byob' {\n  mode = `${mode}`;\n  if (mode !== 'byob') {\n    throw new TypeError(`${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`);\n  }\n  return mode;\n}\n\nexport function convertByobReadOptions(\n  options: ReadableStreamBYOBReaderReadOptions | null | undefined,\n  context: string\n): ValidatedReadableStreamBYOBReaderReadOptions {\n  assertDictionary(options, context);\n  const min = options?.min ?? 1;\n  return {\n    min: convertUnsignedLongLongWithEnforceRange(\n      min,\n      `${context} has member 'min' that`\n    )\n  };\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport {\n  ReadableStreamReaderGenericCancel,\n  ReadableStreamReaderGenericInitialize,\n  ReadableStreamReaderGenericRelease,\n  readerLockException\n} from './generic-reader';\nimport { IsReadableStreamLocked, type ReadableByteStream, type ReadableStream } from '../readable-stream';\nimport {\n  IsReadableByteStreamController,\n  ReadableByteStreamController,\n  ReadableByteStreamControllerPullInto\n} from './byte-stream-controller';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport { newPromise, promiseRejectedWith } from '../helpers/webidl';\nimport { assertRequiredArgument } from '../validators/basic';\nimport { assertReadableStream } from '../validators/readable-stream';\nimport { IsDetachedBuffer } from '../abstract-ops/ecmascript';\nimport type {\n  ReadableStreamBYOBReaderReadOptions,\n  ValidatedReadableStreamBYOBReaderReadOptions\n} from './reader-options';\nimport { convertByobReadOptions } from '../validators/reader-options';\nimport { isDataView, type NonShared, type TypedArray } from '../helpers/array-buffer-view';\n\n/**\n * A result returned by {@link ReadableStreamBYOBReader.read}.\n *\n * @public\n */\nexport type ReadableStreamBYOBReadResult<T extends ArrayBufferView> = {\n  done: false;\n  value: T;\n} | {\n  done: true;\n  value: T | undefined;\n};\n\n// Abstract operations for the ReadableStream.\n\nexport function AcquireReadableStreamBYOBReader(stream: ReadableByteStream): ReadableStreamBYOBReader {\n  return new ReadableStreamBYOBReader(stream as ReadableStream<Uint8Array>);\n}\n\n// ReadableStream API exposed for controllers.\n\nexport function ReadableStreamAddReadIntoRequest<T extends NonShared<ArrayBufferView>>(\n  stream: ReadableByteStream,\n  readIntoRequest: ReadIntoRequest<T>\n): void {\n  assert(IsReadableStreamBYOBReader(stream._reader));\n  assert(stream._state === 'readable' || stream._state === 'closed');\n\n  (stream._reader! as ReadableStreamBYOBReader)._readIntoRequests.push(readIntoRequest);\n}\n\nexport function ReadableStreamFulfillReadIntoRequest(stream: ReadableByteStream,\n                                                     chunk: ArrayBufferView,\n                                                     done: boolean) {\n  const reader = stream._reader as ReadableStreamBYOBReader;\n\n  assert(reader._readIntoRequests.length > 0);\n\n  const readIntoRequest = reader._readIntoRequests.shift()!;\n  if (done) {\n    readIntoRequest._closeSteps(chunk);\n  } else {\n    readIntoRequest._chunkSteps(chunk);\n  }\n}\n\nexport function ReadableStreamGetNumReadIntoRequests(stream: ReadableByteStream): number {\n  return (stream._reader as ReadableStreamBYOBReader)._readIntoRequests.length;\n}\n\nexport function ReadableStreamHasBYOBReader(stream: ReadableByteStream): boolean {\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (!IsReadableStreamBYOBReader(reader)) {\n    return false;\n  }\n\n  return true;\n}\n\n// Readers\n\nexport interface ReadIntoRequest<T extends NonShared<ArrayBufferView>> {\n  _chunkSteps(chunk: T): void;\n\n  _closeSteps(chunk: T | undefined): void;\n\n  _errorSteps(e: any): void;\n}\n\n/**\n * A BYOB reader vended by a {@link ReadableStream}.\n *\n * @public\n */\nexport class ReadableStreamBYOBReader {\n  /** @internal */\n  _ownerReadableStream!: ReadableByteStream;\n  /** @internal */\n  _closedPromise!: Promise<undefined>;\n  /** @internal */\n  _closedPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _closedPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _readIntoRequests: SimpleQueue<ReadIntoRequest<any>>;\n\n  constructor(stream: ReadableStream<Uint8Array>) {\n    assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader');\n    assertReadableStream(stream, 'First parameter');\n\n    if (IsReadableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    if (!IsReadableByteStreamController(stream._readableStreamController)) {\n      throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' +\n        'source');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readIntoRequests = new SimpleQueue();\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n   * the reader's lock is released before the stream finishes closing.\n   */\n  get closed(): Promise<undefined> {\n    if (!IsReadableStreamBYOBReader(this)) {\n      return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n    }\n\n    return this._closedPromise;\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n   */\n  cancel(reason: any = undefined): Promise<void> {\n    if (!IsReadableStreamBYOBReader(this)) {\n      return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('cancel'));\n    }\n\n    return ReadableStreamReaderGenericCancel(this, reason);\n  }\n\n  /**\n   * Attempts to reads bytes into view, and returns a promise resolved with the result.\n   *\n   * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n   */\n  read<T extends ArrayBufferView>(\n    view: T,\n    options?: ReadableStreamBYOBReaderReadOptions\n  ): Promise<ReadableStreamBYOBReadResult<T>>;\n  read<T extends NonShared<ArrayBufferView>>(\n    view: T,\n    rawOptions: ReadableStreamBYOBReaderReadOptions | null | undefined = {}\n  ): Promise<ReadableStreamBYOBReadResult<T>> {\n    if (!IsReadableStreamBYOBReader(this)) {\n      return promiseRejectedWith(byobReaderBrandCheckException('read'));\n    }\n\n    if (!ArrayBuffer.isView(view)) {\n      return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n    }\n    if (view.byteLength === 0) {\n      return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n    }\n    if (view.buffer.byteLength === 0) {\n      return promiseRejectedWith(new TypeError(`view's buffer must have non-zero byteLength`));\n    }\n    if (IsDetachedBuffer(view.buffer)) {\n      return promiseRejectedWith(new TypeError('view\\'s buffer has been detached'));\n    }\n\n    let options: ValidatedReadableStreamBYOBReaderReadOptions;\n    try {\n      options = convertByobReadOptions(rawOptions, 'options');\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    const min = options.min;\n    if (min === 0) {\n      return promiseRejectedWith(new TypeError('options.min must be greater than 0'));\n    }\n    if (!isDataView(view)) {\n      if (min > (view as unknown as TypedArray).length) {\n        return promiseRejectedWith(new RangeError('options.min must be less than or equal to view\\'s length'));\n      }\n    } else if (min > view.byteLength) {\n      return promiseRejectedWith(new RangeError('options.min must be less than or equal to view\\'s byteLength'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('read from'));\n    }\n\n    let resolvePromise!: (result: ReadableStreamBYOBReadResult<T>) => void;\n    let rejectPromise!: (reason: any) => void;\n    const promise = newPromise<ReadableStreamBYOBReadResult<T>>((resolve, reject) => {\n      resolvePromise = resolve;\n      rejectPromise = reject;\n    });\n    const readIntoRequest: ReadIntoRequest<T> = {\n      _chunkSteps: chunk => resolvePromise({ value: chunk, done: false }),\n      _closeSteps: chunk => resolvePromise({ value: chunk, done: true }),\n      _errorSteps: e => rejectPromise(e)\n    };\n    ReadableStreamBYOBReaderRead(this, view, min, readIntoRequest);\n    return promise;\n  }\n\n  /**\n   * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n   * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n   * from now on; otherwise, the reader will appear closed.\n   *\n   * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n   * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to\n   * do so will throw a `TypeError` and leave the reader locked to the stream.\n   */\n  releaseLock(): void {\n    if (!IsReadableStreamBYOBReader(this)) {\n      throw byobReaderBrandCheckException('releaseLock');\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return;\n    }\n\n    ReadableStreamBYOBReaderRelease(this);\n  }\n}\n\nObject.defineProperties(ReadableStreamBYOBReader.prototype, {\n  cancel: { enumerable: true },\n  read: { enumerable: true },\n  releaseLock: { enumerable: true },\n  closed: { enumerable: true }\n});\nsetFunctionName(ReadableStreamBYOBReader.prototype.cancel, 'cancel');\nsetFunctionName(ReadableStreamBYOBReader.prototype.read, 'read');\nsetFunctionName(ReadableStreamBYOBReader.prototype.releaseLock, 'releaseLock');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamBYOBReader.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamBYOBReader',\n    configurable: true\n  });\n}\n\n// Abstract operations for the readers.\n\nexport function IsReadableStreamBYOBReader(x: any): x is ReadableStreamBYOBReader {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamBYOBReader;\n}\n\nexport function ReadableStreamBYOBReaderRead<T extends NonShared<ArrayBufferView>>(\n  reader: ReadableStreamBYOBReader,\n  view: T,\n  min: number,\n  readIntoRequest: ReadIntoRequest<T>\n): void {\n  const stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'errored') {\n    readIntoRequest._errorSteps(stream._storedError);\n  } else {\n    ReadableByteStreamControllerPullInto(\n      stream._readableStreamController as ReadableByteStreamController,\n      view,\n      min,\n      readIntoRequest\n    );\n  }\n}\n\nexport function ReadableStreamBYOBReaderRelease(reader: ReadableStreamBYOBReader) {\n  ReadableStreamReaderGenericRelease(reader);\n  const e = new TypeError('Reader was released');\n  ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e);\n}\n\nexport function ReadableStreamBYOBReaderErrorReadIntoRequests(reader: ReadableStreamBYOBReader, e: any) {\n  const readIntoRequests = reader._readIntoRequests;\n  reader._readIntoRequests = new SimpleQueue();\n  readIntoRequests.forEach(readIntoRequest => {\n    readIntoRequest._errorSteps(e);\n  });\n}\n\n// Helper functions for the ReadableStreamBYOBReader.\n\nfunction byobReaderBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`);\n}\n","import type { QueuingStrategy, QueuingStrategySizeCallback } from '../queuing-strategy';\nimport NumberIsNaN from '../../stub/number-isnan';\n\nexport function ExtractHighWaterMark(strategy: QueuingStrategy, defaultHWM: number): number {\n  const { highWaterMark } = strategy;\n\n  if (highWaterMark === undefined) {\n    return defaultHWM;\n  }\n\n  if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n    throw new RangeError('Invalid highWaterMark');\n  }\n\n  return highWaterMark;\n}\n\nexport function ExtractSizeAlgorithm<T>(strategy: QueuingStrategy<T>): QueuingStrategySizeCallback<T> {\n  const { size } = strategy;\n\n  if (!size) {\n    return () => 1;\n  }\n\n  return size;\n}\n","import type { QueuingStrategy, QueuingStrategySizeCallback } from '../queuing-strategy';\nimport { assertDictionary, assertFunction, convertUnrestrictedDouble } from './basic';\n\nexport function convertQueuingStrategy<T>(init: QueuingStrategy<T> | null | undefined,\n                                          context: string): QueuingStrategy<T> {\n  assertDictionary(init, context);\n  const highWaterMark = init?.highWaterMark;\n  const size = init?.size;\n  return {\n    highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark),\n    size: size === undefined ? undefined : convertQueuingStrategySize(size, `${context} has member 'size' that`)\n  };\n}\n\nfunction convertQueuingStrategySize<T>(fn: QueuingStrategySizeCallback<T>,\n                                       context: string): QueuingStrategySizeCallback<T> {\n  assertFunction(fn, context);\n  return chunk => convertUnrestrictedDouble(fn(chunk));\n}\n","import { assertDictionary, assertFunction } from './basic';\nimport { promiseCall, reflectCall } from '../helpers/webidl';\nimport type {\n  UnderlyingSink,\n  UnderlyingSinkAbortCallback,\n  UnderlyingSinkCloseCallback,\n  UnderlyingSinkStartCallback,\n  UnderlyingSinkWriteCallback,\n  ValidatedUnderlyingSink\n} from '../writable-stream/underlying-sink';\nimport { WritableStreamDefaultController } from '../writable-stream';\n\nexport function convertUnderlyingSink<W>(original: UnderlyingSink<W> | null,\n                                         context: string): ValidatedUnderlyingSink<W> {\n  assertDictionary(original, context);\n  const abort = original?.abort;\n  const close = original?.close;\n  const start = original?.start;\n  const type = original?.type;\n  const write = original?.write;\n  return {\n    abort: abort === undefined ?\n      undefined :\n      convertUnderlyingSinkAbortCallback(abort, original!, `${context} has member 'abort' that`),\n    close: close === undefined ?\n      undefined :\n      convertUnderlyingSinkCloseCallback(close, original!, `${context} has member 'close' that`),\n    start: start === undefined ?\n      undefined :\n      convertUnderlyingSinkStartCallback(start, original!, `${context} has member 'start' that`),\n    write: write === undefined ?\n      undefined :\n      convertUnderlyingSinkWriteCallback(write, original!, `${context} has member 'write' that`),\n    type\n  };\n}\n\nfunction convertUnderlyingSinkAbortCallback(\n  fn: UnderlyingSinkAbortCallback,\n  original: UnderlyingSink,\n  context: string\n): (reason: any) => Promise<void> {\n  assertFunction(fn, context);\n  return (reason: any) => promiseCall(fn, original, [reason]);\n}\n\nfunction convertUnderlyingSinkCloseCallback(\n  fn: UnderlyingSinkCloseCallback,\n  original: UnderlyingSink,\n  context: string\n): () => Promise<void> {\n  assertFunction(fn, context);\n  return () => promiseCall(fn, original, []);\n}\n\nfunction convertUnderlyingSinkStartCallback(\n  fn: UnderlyingSinkStartCallback,\n  original: UnderlyingSink,\n  context: string\n): UnderlyingSinkStartCallback {\n  assertFunction(fn, context);\n  return (controller: WritableStreamDefaultController) => reflectCall(fn, original, [controller]);\n}\n\nfunction convertUnderlyingSinkWriteCallback<W>(\n  fn: UnderlyingSinkWriteCallback<W>,\n  original: UnderlyingSink<W>,\n  context: string\n): (chunk: W, controller: WritableStreamDefaultController) => Promise<void> {\n  assertFunction(fn, context);\n  return (chunk: W, controller: WritableStreamDefaultController) => promiseCall(fn, original, [chunk, controller]);\n}\n","import { IsWritableStream, WritableStream } from '../writable-stream';\n\nexport function assertWritableStream(x: unknown, context: string): asserts x is WritableStream {\n  if (!IsWritableStream(x)) {\n    throw new TypeError(`${context} is not a WritableStream.`);\n  }\n}\n","/**\n * A signal object that allows you to communicate with a request and abort it if required\n * via its associated `AbortController` object.\n *\n * @remarks\n *   This interface is compatible with the `AbortSignal` interface defined in TypeScript's DOM types.\n *   It is redefined here, so it can be polyfilled without a DOM, for example with\n *   {@link https://www.npmjs.com/package/abortcontroller-polyfill | abortcontroller-polyfill} in a Node environment.\n *\n * @public\n */\nexport interface AbortSignal {\n  /**\n   * Whether the request is aborted.\n   */\n  readonly aborted: boolean;\n\n  /**\n   * If aborted, returns the reason for aborting.\n   */\n  readonly reason?: any;\n\n  /**\n   * Add an event listener to be triggered when this signal becomes aborted.\n   */\n  addEventListener(type: 'abort', listener: () => void): void;\n\n  /**\n   * Remove an event listener that was previously added with {@link AbortSignal.addEventListener}.\n   */\n  removeEventListener(type: 'abort', listener: () => void): void;\n}\n\nexport function isAbortSignal(value: unknown): value is AbortSignal {\n  if (typeof value !== 'object' || value === null) {\n    return false;\n  }\n  try {\n    return typeof (value as AbortSignal).aborted === 'boolean';\n  } catch {\n    // AbortSignal.prototype.aborted throws if its brand check fails\n    return false;\n  }\n}\n\n/**\n * A controller object that allows you to abort an `AbortSignal` when desired.\n *\n * @remarks\n *   This interface is compatible with the `AbortController` interface defined in TypeScript's DOM types.\n *   It is redefined here, so it can be polyfilled without a DOM, for example with\n *   {@link https://www.npmjs.com/package/abortcontroller-polyfill | abortcontroller-polyfill} in a Node environment.\n *\n * @internal\n */\nexport interface AbortController {\n  readonly signal: AbortSignal;\n\n  abort(reason?: any): void;\n}\n\ninterface AbortControllerConstructor {\n  new(): AbortController;\n}\n\nconst supportsAbortController = typeof (AbortController as any) === 'function';\n\n/**\n * Construct a new AbortController, if supported by the platform.\n *\n * @internal\n */\nexport function createAbortController(): AbortController | undefined {\n  if (supportsAbortController) {\n    return new (AbortController as AbortControllerConstructor)();\n  }\n  return undefined;\n}\n","import assert from '../stub/assert';\nimport {\n  newPromise,\n  promiseRejectedWith,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  uponPromise\n} from './helpers/webidl';\nimport {\n  DequeueValue,\n  EnqueueValueWithSize,\n  PeekQueueValue,\n  type QueuePair,\n  ResetQueue\n} from './abstract-ops/queue-with-sizes';\nimport type { QueuingStrategy, QueuingStrategySizeCallback } from './queuing-strategy';\nimport { SimpleQueue } from './simple-queue';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { AbortSteps, ErrorSteps } from './abstract-ops/internal-methods';\nimport { IsNonNegativeNumber } from './abstract-ops/miscellaneous';\nimport { ExtractHighWaterMark, ExtractSizeAlgorithm } from './abstract-ops/queuing-strategy';\nimport { convertQueuingStrategy } from './validators/queuing-strategy';\nimport type {\n  UnderlyingSink,\n  UnderlyingSinkAbortCallback,\n  UnderlyingSinkCloseCallback,\n  UnderlyingSinkStartCallback,\n  UnderlyingSinkWriteCallback,\n  ValidatedUnderlyingSink\n} from './writable-stream/underlying-sink';\nimport { assertObject, assertRequiredArgument } from './validators/basic';\nimport { convertUnderlyingSink } from './validators/underlying-sink';\nimport { assertWritableStream } from './validators/writable-stream';\nimport { type AbortController, type AbortSignal, createAbortController } from './abort-signal';\n\ntype WritableStreamState = 'writable' | 'closed' | 'erroring' | 'errored';\n\ninterface WriteOrCloseRequest {\n  _resolve: (value?: undefined) => void;\n  _reject: (reason: any) => void;\n}\n\ntype WriteRequest = WriteOrCloseRequest;\ntype CloseRequest = WriteOrCloseRequest;\n\ninterface PendingAbortRequest {\n  _promise: Promise<undefined>;\n  _resolve: (value?: undefined) => void;\n  _reject: (reason: any) => void;\n  _reason: any;\n  _wasAlreadyErroring: boolean;\n}\n\n/**\n * A writable stream represents a destination for data, into which you can write.\n *\n * @public\n */\nclass WritableStream<W = any> {\n  /** @internal */\n  _state!: WritableStreamState;\n  /** @internal */\n  _storedError: any;\n  /** @internal */\n  _writer: WritableStreamDefaultWriter<W> | undefined;\n  /** @internal */\n  _writableStreamController!: WritableStreamDefaultController<W>;\n  /** @internal */\n  _writeRequests!: SimpleQueue<WriteRequest>;\n  /** @internal */\n  _inFlightWriteRequest: WriteRequest | undefined;\n  /** @internal */\n  _closeRequest: CloseRequest | undefined;\n  /** @internal */\n  _inFlightCloseRequest: CloseRequest | undefined;\n  /** @internal */\n  _pendingAbortRequest: PendingAbortRequest | undefined;\n  /** @internal */\n  _backpressure!: boolean;\n\n  constructor(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>);\n  constructor(rawUnderlyingSink: UnderlyingSink<W> | null | undefined = {},\n              rawStrategy: QueuingStrategy<W> | null | undefined = {}) {\n    if (rawUnderlyingSink === undefined) {\n      rawUnderlyingSink = null;\n    } else {\n      assertObject(rawUnderlyingSink, 'First parameter');\n    }\n\n    const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n    const underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter');\n\n    InitializeWritableStream(this);\n\n    const type = underlyingSink.type;\n    if (type !== undefined) {\n      throw new RangeError('Invalid type is specified');\n    }\n\n    const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n    const highWaterMark = ExtractHighWaterMark(strategy, 1);\n\n    SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n  }\n\n  /**\n   * Returns whether or not the writable stream is locked to a writer.\n   */\n  get locked(): boolean {\n    if (!IsWritableStream(this)) {\n      throw streamBrandCheckException('locked');\n    }\n\n    return IsWritableStreamLocked(this);\n  }\n\n  /**\n   * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be\n   * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort\n   * mechanism of the underlying sink.\n   *\n   * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled\n   * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel\n   * the stream) if the stream is currently locked.\n   */\n  abort(reason: any = undefined): Promise<void> {\n    if (!IsWritableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('abort'));\n    }\n\n    if (IsWritableStreamLocked(this)) {\n      return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n    }\n\n    return WritableStreamAbort(this, reason);\n  }\n\n  /**\n   * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its\n   * close behavior. During this time any further attempts to write will fail (without erroring the stream).\n   *\n   * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream\n   * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with\n   * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked.\n   */\n  close() {\n    if (!IsWritableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('close'));\n    }\n\n    if (IsWritableStreamLocked(this)) {\n      return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n    }\n\n    if (WritableStreamCloseQueuedOrInFlight(this)) {\n      return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n    }\n\n    return WritableStreamClose(this);\n  }\n\n  /**\n   * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream\n   * is locked, no other writer can be acquired until this one is released.\n   *\n   * This functionality is especially useful for creating abstractions that desire the ability to write to a stream\n   * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at\n   * the same time, which would cause the resulting written data to be unpredictable and probably useless.\n   */\n  getWriter(): WritableStreamDefaultWriter<W> {\n    if (!IsWritableStream(this)) {\n      throw streamBrandCheckException('getWriter');\n    }\n\n    return AcquireWritableStreamDefaultWriter(this);\n  }\n}\n\nObject.defineProperties(WritableStream.prototype, {\n  abort: { enumerable: true },\n  close: { enumerable: true },\n  getWriter: { enumerable: true },\n  locked: { enumerable: true }\n});\nsetFunctionName(WritableStream.prototype.abort, 'abort');\nsetFunctionName(WritableStream.prototype.close, 'close');\nsetFunctionName(WritableStream.prototype.getWriter, 'getWriter');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(WritableStream.prototype, Symbol.toStringTag, {\n    value: 'WritableStream',\n    configurable: true\n  });\n}\n\nexport {\n  AcquireWritableStreamDefaultWriter,\n  CreateWritableStream,\n  IsWritableStream,\n  IsWritableStreamLocked,\n  WritableStream,\n  WritableStreamAbort,\n  WritableStreamDefaultControllerErrorIfNeeded,\n  WritableStreamDefaultWriterCloseWithErrorPropagation,\n  WritableStreamDefaultWriterRelease,\n  WritableStreamDefaultWriterWrite,\n  WritableStreamCloseQueuedOrInFlight\n};\n\nexport type {\n  UnderlyingSink,\n  UnderlyingSinkStartCallback,\n  UnderlyingSinkWriteCallback,\n  UnderlyingSinkCloseCallback,\n  UnderlyingSinkAbortCallback\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter<W>(stream: WritableStream<W>): WritableStreamDefaultWriter<W> {\n  return new WritableStreamDefaultWriter(stream);\n}\n\n// Throws if and only if startAlgorithm throws.\nfunction CreateWritableStream<W>(startAlgorithm: () => void | PromiseLike<void>,\n                                 writeAlgorithm: (chunk: W) => Promise<void>,\n                                 closeAlgorithm: () => Promise<void>,\n                                 abortAlgorithm: (reason: any) => Promise<void>,\n                                 highWaterMark = 1,\n                                 sizeAlgorithm: QueuingStrategySizeCallback<W> = () => 1) {\n  assert(IsNonNegativeNumber(highWaterMark));\n\n  const stream: WritableStream<W> = Object.create(WritableStream.prototype);\n  InitializeWritableStream(stream);\n\n  const controller: WritableStreamDefaultController<W> = Object.create(WritableStreamDefaultController.prototype);\n\n  SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm,\n                                       abortAlgorithm, highWaterMark, sizeAlgorithm);\n  return stream;\n}\n\nfunction InitializeWritableStream<W>(stream: WritableStream<W>) {\n  stream._state = 'writable';\n\n  // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n  // 'erroring' or 'errored'. May be set to an undefined value.\n  stream._storedError = undefined;\n\n  stream._writer = undefined;\n\n  // Initialize to undefined first because the constructor of the controller checks this\n  // variable to validate the caller.\n  stream._writableStreamController = undefined!;\n\n  // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n  // producer without waiting for the queued writes to finish.\n  stream._writeRequests = new SimpleQueue();\n\n  // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n  // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n  stream._inFlightWriteRequest = undefined;\n\n  // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n  // has been detached.\n  stream._closeRequest = undefined;\n\n  // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n  // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n  stream._inFlightCloseRequest = undefined;\n\n  // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n  stream._pendingAbortRequest = undefined;\n\n  // The backpressure signal set by the controller.\n  stream._backpressure = false;\n}\n\nfunction IsWritableStream(x: unknown): x is WritableStream {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n    return false;\n  }\n\n  return x instanceof WritableStream;\n}\n\nfunction IsWritableStreamLocked(stream: WritableStream): boolean {\n  assert(IsWritableStream(stream));\n\n  if (stream._writer === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamAbort(stream: WritableStream, reason: any): Promise<undefined> {\n  if (stream._state === 'closed' || stream._state === 'errored') {\n    return promiseResolvedWith(undefined);\n  }\n  stream._writableStreamController._abortReason = reason;\n  stream._writableStreamController._abortController?.abort(reason);\n\n  // TypeScript narrows the type of `stream._state` down to 'writable' | 'erroring',\n  // but it doesn't know that signaling abort runs author code that might have changed the state.\n  // Widen the type again by casting to WritableStreamState.\n  const state = stream._state as WritableStreamState;\n\n  if (state === 'closed' || state === 'errored') {\n    return promiseResolvedWith(undefined);\n  }\n  if (stream._pendingAbortRequest !== undefined) {\n    return stream._pendingAbortRequest._promise;\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n\n  let wasAlreadyErroring = false;\n  if (state === 'erroring') {\n    wasAlreadyErroring = true;\n    // reason will not be used, so don't keep a reference to it.\n    reason = undefined;\n  }\n\n  const promise = newPromise<undefined>((resolve, reject) => {\n    stream._pendingAbortRequest = {\n      _promise: undefined!,\n      _resolve: resolve,\n      _reject: reject,\n      _reason: reason,\n      _wasAlreadyErroring: wasAlreadyErroring\n    };\n  });\n  stream._pendingAbortRequest!._promise = promise;\n\n  if (!wasAlreadyErroring) {\n    WritableStreamStartErroring(stream, reason);\n  }\n\n  return promise;\n}\n\nfunction WritableStreamClose(stream: WritableStream<any>): Promise<undefined> {\n  const state = stream._state;\n  if (state === 'closed' || state === 'errored') {\n    return promiseRejectedWith(new TypeError(\n      `The stream (in ${state} state) is not in the writable state and cannot be closed`));\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n  assert(!WritableStreamCloseQueuedOrInFlight(stream));\n\n  const promise = newPromise<undefined>((resolve, reject) => {\n    const closeRequest: CloseRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._closeRequest = closeRequest;\n  });\n\n  const writer = stream._writer;\n  if (writer !== undefined && stream._backpressure && state === 'writable') {\n    defaultWriterReadyPromiseResolve(writer);\n  }\n\n  WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n  return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream: WritableStream): Promise<undefined> {\n  assert(IsWritableStreamLocked(stream));\n  assert(stream._state === 'writable');\n\n  const promise = newPromise<undefined>((resolve, reject) => {\n    const writeRequest: WriteRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._writeRequests.push(writeRequest);\n  });\n\n  return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream: WritableStream, error: any) {\n  const state = stream._state;\n\n  if (state === 'writable') {\n    WritableStreamStartErroring(stream, error);\n    return;\n  }\n\n  assert(state === 'erroring');\n  WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream: WritableStream, reason: any) {\n  assert(stream._storedError === undefined);\n  assert(stream._state === 'writable');\n\n  const controller = stream._writableStreamController;\n  assert(controller !== undefined);\n\n  stream._state = 'erroring';\n  stream._storedError = reason;\n  const writer = stream._writer;\n  if (writer !== undefined) {\n    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n  }\n\n  if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) {\n    WritableStreamFinishErroring(stream);\n  }\n}\n\nfunction WritableStreamFinishErroring(stream: WritableStream) {\n  assert(stream._state === 'erroring');\n  assert(!WritableStreamHasOperationMarkedInFlight(stream));\n  stream._state = 'errored';\n  stream._writableStreamController[ErrorSteps]();\n\n  const storedError = stream._storedError;\n  stream._writeRequests.forEach(writeRequest => {\n    writeRequest._reject(storedError);\n  });\n  stream._writeRequests = new SimpleQueue();\n\n  if (stream._pendingAbortRequest === undefined) {\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  const abortRequest = stream._pendingAbortRequest;\n  stream._pendingAbortRequest = undefined;\n\n  if (abortRequest._wasAlreadyErroring) {\n    abortRequest._reject(storedError);\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  const promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n  uponPromise(\n    promise,\n    () => {\n      abortRequest._resolve();\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return null;\n    },\n    (reason: any) => {\n      abortRequest._reject(reason);\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return null;\n    });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream: WritableStream) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest!._resolve(undefined);\n  stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream: WritableStream, error: any) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest!._reject(error);\n  stream._inFlightWriteRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream: WritableStream) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest!._resolve(undefined);\n  stream._inFlightCloseRequest = undefined;\n\n  const state = stream._state;\n\n  assert(state === 'writable' || state === 'erroring');\n\n  if (state === 'erroring') {\n    // The error was too late to do anything, so it is ignored.\n    stream._storedError = undefined;\n    if (stream._pendingAbortRequest !== undefined) {\n      stream._pendingAbortRequest._resolve();\n      stream._pendingAbortRequest = undefined;\n    }\n  }\n\n  stream._state = 'closed';\n\n  const writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseResolve(writer);\n  }\n\n  assert(stream._pendingAbortRequest === undefined);\n  assert(stream._storedError === undefined);\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream: WritableStream, error: any) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest!._reject(error);\n  stream._inFlightCloseRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  // Never execute sink abort() after sink close().\n  if (stream._pendingAbortRequest !== undefined) {\n    stream._pendingAbortRequest._reject(error);\n    stream._pendingAbortRequest = undefined;\n  }\n  WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream: WritableStream): boolean {\n  if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream: WritableStream): boolean {\n  if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream: WritableStream) {\n  assert(stream._inFlightCloseRequest === undefined);\n  assert(stream._closeRequest !== undefined);\n  stream._inFlightCloseRequest = stream._closeRequest;\n  stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream: WritableStream) {\n  assert(stream._inFlightWriteRequest === undefined);\n  assert(stream._writeRequests.length !== 0);\n  stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream: WritableStream) {\n  assert(stream._state === 'errored');\n  if (stream._closeRequest !== undefined) {\n    assert(stream._inFlightCloseRequest === undefined);\n\n    stream._closeRequest._reject(stream._storedError);\n    stream._closeRequest = undefined;\n  }\n  const writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseReject(writer, stream._storedError);\n  }\n}\n\nfunction WritableStreamUpdateBackpressure(stream: WritableStream, backpressure: boolean) {\n  assert(stream._state === 'writable');\n  assert(!WritableStreamCloseQueuedOrInFlight(stream));\n\n  const writer = stream._writer;\n  if (writer !== undefined && backpressure !== stream._backpressure) {\n    if (backpressure) {\n      defaultWriterReadyPromiseReset(writer);\n    } else {\n      assert(!backpressure);\n\n      defaultWriterReadyPromiseResolve(writer);\n    }\n  }\n\n  stream._backpressure = backpressure;\n}\n\n/**\n * A default writer vended by a {@link WritableStream}.\n *\n * @public\n */\nexport class WritableStreamDefaultWriter<W = any> {\n  /** @internal */\n  _ownerWritableStream: WritableStream<W>;\n  /** @internal */\n  _closedPromise!: Promise<undefined>;\n  /** @internal */\n  _closedPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _closedPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _closedPromiseState!: 'pending' | 'resolved' | 'rejected';\n  /** @internal */\n  _readyPromise!: Promise<undefined>;\n  /** @internal */\n  _readyPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _readyPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _readyPromiseState!: 'pending' | 'fulfilled' | 'rejected';\n\n  constructor(stream: WritableStream<W>) {\n    assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter');\n    assertWritableStream(stream, 'First parameter');\n\n    if (IsWritableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n    }\n\n    this._ownerWritableStream = stream;\n    stream._writer = this;\n\n    const state = stream._state;\n\n    if (state === 'writable') {\n      if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {\n        defaultWriterReadyPromiseInitialize(this);\n      } else {\n        defaultWriterReadyPromiseInitializeAsResolved(this);\n      }\n\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'erroring') {\n      defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'closed') {\n      defaultWriterReadyPromiseInitializeAsResolved(this);\n      defaultWriterClosedPromiseInitializeAsResolved(this);\n    } else {\n      assert(state === 'errored');\n\n      const storedError = stream._storedError;\n      defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n      defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n    }\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n   * the writer’s lock is released before the stream finishes closing.\n   */\n  get closed(): Promise<undefined> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n    }\n\n    return this._closedPromise;\n  }\n\n  /**\n   * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full.\n   * A producer can use this information to determine the right amount of data to write.\n   *\n   * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort\n   * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when\n   * the writer’s lock is released.\n   */\n  get desiredSize(): number | null {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      throw defaultWriterBrandCheckException('desiredSize');\n    }\n\n    if (this._ownerWritableStream === undefined) {\n      throw defaultWriterLockException('desiredSize');\n    }\n\n    return WritableStreamDefaultWriterGetDesiredSize(this);\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions\n   * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips\n   * back to zero or below, the getter will return a new promise that stays pending until the next transition.\n   *\n   * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become\n   * rejected.\n   */\n  get ready(): Promise<undefined> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n    }\n\n    return this._readyPromise;\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.\n   */\n  abort(reason: any = undefined): Promise<void> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n    }\n\n    if (this._ownerWritableStream === undefined) {\n      return promiseRejectedWith(defaultWriterLockException('abort'));\n    }\n\n    return WritableStreamDefaultWriterAbort(this, reason);\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.\n   */\n  close(): Promise<void> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n    }\n\n    const stream = this._ownerWritableStream;\n\n    if (stream === undefined) {\n      return promiseRejectedWith(defaultWriterLockException('close'));\n    }\n\n    if (WritableStreamCloseQueuedOrInFlight(stream)) {\n      return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n    }\n\n    return WritableStreamDefaultWriterClose(this);\n  }\n\n  /**\n   * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active.\n   * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from\n   * now on; otherwise, the writer will appear closed.\n   *\n   * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the\n   * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled).\n   * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents\n   * other producers from writing in an interleaved manner.\n   */\n  releaseLock(): void {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      throw defaultWriterBrandCheckException('releaseLock');\n    }\n\n    const stream = this._ownerWritableStream;\n\n    if (stream === undefined) {\n      return;\n    }\n\n    assert(stream._writer !== undefined);\n\n    WritableStreamDefaultWriterRelease(this);\n  }\n\n  /**\n   * Writes the given chunk to the writable stream, by waiting until any previous writes have finished successfully,\n   * and then sending the chunk to the underlying sink's {@link UnderlyingSink.write | write()} method. It will return\n   * a promise that fulfills with undefined upon a successful write, or rejects if the write fails or stream becomes\n   * errored before the writing process is initiated.\n   *\n   * Note that what \"success\" means is up to the underlying sink; it might indicate simply that the chunk has been\n   * accepted, and not necessarily that it is safely saved to its ultimate destination.\n   */\n  write(chunk: W): Promise<void>;\n  write(chunk: W = undefined!): Promise<void> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n    }\n\n    if (this._ownerWritableStream === undefined) {\n      return promiseRejectedWith(defaultWriterLockException('write to'));\n    }\n\n    return WritableStreamDefaultWriterWrite(this, chunk);\n  }\n}\n\nObject.defineProperties(WritableStreamDefaultWriter.prototype, {\n  abort: { enumerable: true },\n  close: { enumerable: true },\n  releaseLock: { enumerable: true },\n  write: { enumerable: true },\n  closed: { enumerable: true },\n  desiredSize: { enumerable: true },\n  ready: { enumerable: true }\n});\nsetFunctionName(WritableStreamDefaultWriter.prototype.abort, 'abort');\nsetFunctionName(WritableStreamDefaultWriter.prototype.close, 'close');\nsetFunctionName(WritableStreamDefaultWriter.prototype.releaseLock, 'releaseLock');\nsetFunctionName(WritableStreamDefaultWriter.prototype.write, 'write');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(WritableStreamDefaultWriter.prototype, Symbol.toStringTag, {\n    value: 'WritableStreamDefaultWriter',\n    configurable: true\n  });\n}\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter<W = any>(x: any): x is WritableStreamDefaultWriter<W> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n    return false;\n  }\n\n  return x instanceof WritableStreamDefaultWriter;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer: WritableStreamDefaultWriter, reason: any) {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer: WritableStreamDefaultWriter): Promise<undefined> {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  return WritableStreamClose(stream);\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer: WritableStreamDefaultWriter): Promise<undefined> {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  const state = stream._state;\n  if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n    return promiseResolvedWith(undefined);\n  }\n\n  if (state === 'errored') {\n    return promiseRejectedWith(stream._storedError);\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n\n  return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer: WritableStreamDefaultWriter, error: any) {\n  if (writer._closedPromiseState === 'pending') {\n    defaultWriterClosedPromiseReject(writer, error);\n  } else {\n    defaultWriterClosedPromiseResetToRejected(writer, error);\n  }\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer: WritableStreamDefaultWriter, error: any) {\n  if (writer._readyPromiseState === 'pending') {\n    defaultWriterReadyPromiseReject(writer, error);\n  } else {\n    defaultWriterReadyPromiseResetToRejected(writer, error);\n  }\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer: WritableStreamDefaultWriter): number | null {\n  const stream = writer._ownerWritableStream;\n  const state = stream._state;\n\n  if (state === 'errored' || state === 'erroring') {\n    return null;\n  }\n\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer: WritableStreamDefaultWriter) {\n  const stream = writer._ownerWritableStream;\n  assert(stream !== undefined);\n  assert(stream._writer === writer);\n\n  const releasedError = new TypeError(\n    `Writer was released and can no longer be used to monitor the stream's closedness`);\n\n  WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n  // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n  // rejected until afterwards. This means that simply testing state will not work.\n  WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n  stream._writer = undefined;\n  writer._ownerWritableStream = undefined!;\n}\n\nfunction WritableStreamDefaultWriterWrite<W>(writer: WritableStreamDefaultWriter<W>, chunk: W): Promise<undefined> {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  const controller = stream._writableStreamController;\n\n  const chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n  if (stream !== writer._ownerWritableStream) {\n    return promiseRejectedWith(defaultWriterLockException('write to'));\n  }\n\n  const state = stream._state;\n  if (state === 'errored') {\n    return promiseRejectedWith(stream._storedError);\n  }\n  if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n    return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n  }\n  if (state === 'erroring') {\n    return promiseRejectedWith(stream._storedError);\n  }\n\n  assert(state === 'writable');\n\n  const promise = WritableStreamAddWriteRequest(stream);\n\n  WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n  return promise;\n}\n\nconst closeSentinel: unique symbol = {} as any;\n\ntype QueueRecord<W> = W | typeof closeSentinel;\n\n/**\n * Allows control of a {@link WritableStream | writable stream}'s state and internal queue.\n *\n * @public\n */\nexport class WritableStreamDefaultController<W = any> {\n  /** @internal */\n  _controlledWritableStream!: WritableStream<W>;\n  /** @internal */\n  _queue!: SimpleQueue<QueuePair<QueueRecord<W>>>;\n  /** @internal */\n  _queueTotalSize!: number;\n  /** @internal */\n  _abortReason: any;\n  /** @internal */\n  _abortController: AbortController | undefined;\n  /** @internal */\n  _started!: boolean;\n  /** @internal */\n  _strategySizeAlgorithm!: QueuingStrategySizeCallback<W>;\n  /** @internal */\n  _strategyHWM!: number;\n  /** @internal */\n  _writeAlgorithm!: (chunk: W) => Promise<void>;\n  /** @internal */\n  _closeAlgorithm!: () => Promise<void>;\n  /** @internal */\n  _abortAlgorithm!: (reason: any) => Promise<void>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted.\n   *\n   * @deprecated\n   *  This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177.\n   *  Use {@link WritableStreamDefaultController.signal}'s `reason` instead.\n   */\n  get abortReason(): any {\n    if (!IsWritableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('abortReason');\n    }\n    return this._abortReason;\n  }\n\n  /**\n   * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted.\n   */\n  get signal(): AbortSignal {\n    if (!IsWritableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('signal');\n    }\n    if (this._abortController === undefined) {\n      // Older browsers or older Node versions may not support `AbortController` or `AbortSignal`.\n      // We don't want to bundle and ship an `AbortController` polyfill together with our polyfill,\n      // so instead we only implement support for `signal` if we find a global `AbortController` constructor.\n      throw new TypeError('WritableStreamDefaultController.prototype.signal is not supported');\n    }\n    return this._abortController.signal;\n  }\n\n  /**\n   * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`.\n   *\n   * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying\n   * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the\n   * normal lifecycle of interactions with the underlying sink.\n   */\n  error(e: any = undefined): void {\n    if (!IsWritableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('error');\n    }\n    const state = this._controlledWritableStream._state;\n    if (state !== 'writable') {\n      // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n      // just treat it as a no-op.\n      return;\n    }\n\n    WritableStreamDefaultControllerError(this, e);\n  }\n\n  /** @internal */\n  [AbortSteps](reason: any): Promise<void> {\n    const result = this._abortAlgorithm(reason);\n    WritableStreamDefaultControllerClearAlgorithms(this);\n    return result;\n  }\n\n  /** @internal */\n  [ErrorSteps]() {\n    ResetQueue(this);\n  }\n}\n\nObject.defineProperties(WritableStreamDefaultController.prototype, {\n  abortReason: { enumerable: true },\n  signal: { enumerable: true },\n  error: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(WritableStreamDefaultController.prototype, Symbol.toStringTag, {\n    value: 'WritableStreamDefaultController',\n    configurable: true\n  });\n}\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction IsWritableStreamDefaultController(x: any): x is WritableStreamDefaultController<any> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n    return false;\n  }\n\n  return x instanceof WritableStreamDefaultController;\n}\n\nfunction SetUpWritableStreamDefaultController<W>(stream: WritableStream<W>,\n                                                 controller: WritableStreamDefaultController<W>,\n                                                 startAlgorithm: () => void | PromiseLike<void>,\n                                                 writeAlgorithm: (chunk: W) => Promise<void>,\n                                                 closeAlgorithm: () => Promise<void>,\n                                                 abortAlgorithm: (reason: any) => Promise<void>,\n                                                 highWaterMark: number,\n                                                 sizeAlgorithm: QueuingStrategySizeCallback<W>) {\n  assert(IsWritableStream(stream));\n  assert(stream._writableStreamController === undefined);\n\n  controller._controlledWritableStream = stream;\n  stream._writableStreamController = controller;\n\n  // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n  controller._queue = undefined!;\n  controller._queueTotalSize = undefined!;\n  ResetQueue(controller);\n\n  controller._abortReason = undefined;\n  controller._abortController = createAbortController();\n  controller._started = false;\n\n  controller._strategySizeAlgorithm = sizeAlgorithm;\n  controller._strategyHWM = highWaterMark;\n\n  controller._writeAlgorithm = writeAlgorithm;\n  controller._closeAlgorithm = closeAlgorithm;\n  controller._abortAlgorithm = abortAlgorithm;\n\n  const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n  WritableStreamUpdateBackpressure(stream, backpressure);\n\n  const startResult = startAlgorithm();\n  const startPromise = promiseResolvedWith(startResult);\n  uponPromise(\n    startPromise,\n    () => {\n      assert(stream._state === 'writable' || stream._state === 'erroring');\n      controller._started = true;\n      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n      return null;\n    },\n    r => {\n      assert(stream._state === 'writable' || stream._state === 'erroring');\n      controller._started = true;\n      WritableStreamDealWithRejection(stream, r);\n      return null;\n    }\n  );\n}\n\nfunction SetUpWritableStreamDefaultControllerFromUnderlyingSink<W>(stream: WritableStream<W>,\n                                                                   underlyingSink: ValidatedUnderlyingSink<W>,\n                                                                   highWaterMark: number,\n                                                                   sizeAlgorithm: QueuingStrategySizeCallback<W>) {\n  const controller = Object.create(WritableStreamDefaultController.prototype);\n\n  let startAlgorithm: () => void | PromiseLike<void>;\n  let writeAlgorithm: (chunk: W) => Promise<void>;\n  let closeAlgorithm: () => Promise<void>;\n  let abortAlgorithm: (reason: any) => Promise<void>;\n\n  if (underlyingSink.start !== undefined) {\n    startAlgorithm = () => underlyingSink.start!(controller);\n  } else {\n    startAlgorithm = () => undefined;\n  }\n  if (underlyingSink.write !== undefined) {\n    writeAlgorithm = chunk => underlyingSink.write!(chunk, controller);\n  } else {\n    writeAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingSink.close !== undefined) {\n    closeAlgorithm = () => underlyingSink.close!();\n  } else {\n    closeAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingSink.abort !== undefined) {\n    abortAlgorithm = reason => underlyingSink.abort!(reason);\n  } else {\n    abortAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  SetUpWritableStreamDefaultController(\n    stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm\n  );\n}\n\n// ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.\nfunction WritableStreamDefaultControllerClearAlgorithms(controller: WritableStreamDefaultController<any>) {\n  controller._writeAlgorithm = undefined!;\n  controller._closeAlgorithm = undefined!;\n  controller._abortAlgorithm = undefined!;\n  controller._strategySizeAlgorithm = undefined!;\n}\n\nfunction WritableStreamDefaultControllerClose<W>(controller: WritableStreamDefaultController<W>) {\n  EnqueueValueWithSize(controller, closeSentinel, 0);\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize<W>(controller: WritableStreamDefaultController<W>,\n                                                        chunk: W): number {\n  try {\n    return controller._strategySizeAlgorithm(chunk);\n  } catch (chunkSizeE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n    return 1;\n  }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller: WritableStreamDefaultController<any>): number {\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite<W>(controller: WritableStreamDefaultController<W>,\n                                                 chunk: W,\n                                                 chunkSize: number) {\n  try {\n    EnqueueValueWithSize(controller, chunk, chunkSize);\n  } catch (enqueueE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n    return;\n  }\n\n  const stream = controller._controlledWritableStream;\n  if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') {\n    const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n    WritableStreamUpdateBackpressure(stream, backpressure);\n  }\n\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded<W>(controller: WritableStreamDefaultController<W>) {\n  const stream = controller._controlledWritableStream;\n\n  if (!controller._started) {\n    return;\n  }\n\n  if (stream._inFlightWriteRequest !== undefined) {\n    return;\n  }\n\n  const state = stream._state;\n  assert(state !== 'closed' && state !== 'errored');\n  if (state === 'erroring') {\n    WritableStreamFinishErroring(stream);\n    return;\n  }\n\n  if (controller._queue.length === 0) {\n    return;\n  }\n\n  const value = PeekQueueValue(controller);\n  if (value === closeSentinel) {\n    WritableStreamDefaultControllerProcessClose(controller);\n  } else {\n    WritableStreamDefaultControllerProcessWrite(controller, value);\n  }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller: WritableStreamDefaultController<any>, error: any) {\n  if (controller._controlledWritableStream._state === 'writable') {\n    WritableStreamDefaultControllerError(controller, error);\n  }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller: WritableStreamDefaultController<any>) {\n  const stream = controller._controlledWritableStream;\n\n  WritableStreamMarkCloseRequestInFlight(stream);\n\n  DequeueValue(controller);\n  assert(controller._queue.length === 0);\n\n  const sinkClosePromise = controller._closeAlgorithm();\n  WritableStreamDefaultControllerClearAlgorithms(controller);\n  uponPromise(\n    sinkClosePromise,\n    () => {\n      WritableStreamFinishInFlightClose(stream);\n      return null;\n    },\n    reason => {\n      WritableStreamFinishInFlightCloseWithError(stream, reason);\n      return null;\n    }\n  );\n}\n\nfunction WritableStreamDefaultControllerProcessWrite<W>(controller: WritableStreamDefaultController<W>, chunk: W) {\n  const stream = controller._controlledWritableStream;\n\n  WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n  const sinkWritePromise = controller._writeAlgorithm(chunk);\n  uponPromise(\n    sinkWritePromise,\n    () => {\n      WritableStreamFinishInFlightWrite(stream);\n\n      const state = stream._state;\n      assert(state === 'writable' || state === 'erroring');\n\n      DequeueValue(controller);\n\n      if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') {\n        const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n        WritableStreamUpdateBackpressure(stream, backpressure);\n      }\n\n      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n      return null;\n    },\n    reason => {\n      if (stream._state === 'writable') {\n        WritableStreamDefaultControllerClearAlgorithms(controller);\n      }\n      WritableStreamFinishInFlightWriteWithError(stream, reason);\n      return null;\n    }\n  );\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller: WritableStreamDefaultController<any>): boolean {\n  const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n  return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller: WritableStreamDefaultController<any>, error: any) {\n  const stream = controller._controlledWritableStream;\n\n  assert(stream._state === 'writable');\n\n  WritableStreamDefaultControllerClearAlgorithms(controller);\n  WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name: string): TypeError {\n  return new TypeError(`WritableStream.prototype.${name} can only be used on a WritableStream`);\n}\n\n// Helper functions for the WritableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `WritableStreamDefaultController.prototype.${name} can only be used on a WritableStreamDefaultController`);\n}\n\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `WritableStreamDefaultWriter.prototype.${name} can only be used on a WritableStreamDefaultWriter`);\n}\n\nfunction defaultWriterLockException(name: string): TypeError {\n  return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer: WritableStreamDefaultWriter) {\n  writer._closedPromise = newPromise((resolve, reject) => {\n    writer._closedPromise_resolve = resolve;\n    writer._closedPromise_reject = reject;\n    writer._closedPromiseState = 'pending';\n  });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  defaultWriterClosedPromiseInitialize(writer);\n  defaultWriterClosedPromiseReject(writer, reason);\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer: WritableStreamDefaultWriter) {\n  defaultWriterClosedPromiseInitialize(writer);\n  defaultWriterClosedPromiseResolve(writer);\n}\n\nfunction defaultWriterClosedPromiseReject(writer: WritableStreamDefaultWriter, reason: any) {\n  if (writer._closedPromise_reject === undefined) {\n    return;\n  }\n  assert(writer._closedPromiseState === 'pending');\n\n  setPromiseIsHandledToTrue(writer._closedPromise);\n  writer._closedPromise_reject(reason);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  assert(writer._closedPromise_resolve === undefined);\n  assert(writer._closedPromise_reject === undefined);\n  assert(writer._closedPromiseState !== 'pending');\n\n  defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n}\n\nfunction defaultWriterClosedPromiseResolve(writer: WritableStreamDefaultWriter) {\n  if (writer._closedPromise_resolve === undefined) {\n    return;\n  }\n  assert(writer._closedPromiseState === 'pending');\n\n  writer._closedPromise_resolve(undefined);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer: WritableStreamDefaultWriter) {\n  writer._readyPromise = newPromise((resolve, reject) => {\n    writer._readyPromise_resolve = resolve;\n    writer._readyPromise_reject = reject;\n  });\n  writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  defaultWriterReadyPromiseInitialize(writer);\n  defaultWriterReadyPromiseReject(writer, reason);\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer: WritableStreamDefaultWriter) {\n  defaultWriterReadyPromiseInitialize(writer);\n  defaultWriterReadyPromiseResolve(writer);\n}\n\nfunction defaultWriterReadyPromiseReject(writer: WritableStreamDefaultWriter, reason: any) {\n  if (writer._readyPromise_reject === undefined) {\n    return;\n  }\n\n  setPromiseIsHandledToTrue(writer._readyPromise);\n  writer._readyPromise_reject(reason);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer: WritableStreamDefaultWriter) {\n  assert(writer._readyPromise_resolve === undefined);\n  assert(writer._readyPromise_reject === undefined);\n\n  defaultWriterReadyPromiseInitialize(writer);\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  assert(writer._readyPromise_resolve === undefined);\n  assert(writer._readyPromise_reject === undefined);\n\n  defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n}\n\nfunction defaultWriterReadyPromiseResolve(writer: WritableStreamDefaultWriter) {\n  if (writer._readyPromise_resolve === undefined) {\n    return;\n  }\n\n  writer._readyPromise_resolve(undefined);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'fulfilled';\n}\n","/// <reference lib=\"dom\" />\n\nfunction getGlobals(): typeof globalThis | undefined {\n  if (typeof globalThis !== 'undefined') {\n    return globalThis;\n  } else if (typeof self !== 'undefined') {\n    return self;\n  } else if (typeof global !== 'undefined') {\n    return global;\n  }\n  return undefined;\n}\n\nexport const globals = getGlobals();\n","/// <reference types=\"node\" />\nimport { globals } from '../globals';\nimport { setFunctionName } from '../lib/helpers/miscellaneous';\n\ninterface DOMException extends Error {\n  name: string;\n  message: string;\n}\n\ntype DOMExceptionConstructor = new (message?: string, name?: string) => DOMException;\n\nfunction isDOMExceptionConstructor(ctor: unknown): ctor is DOMExceptionConstructor {\n  if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n    return false;\n  }\n  if ((ctor as DOMExceptionConstructor).name !== 'DOMException') {\n    return false;\n  }\n  try {\n    new (ctor as DOMExceptionConstructor)();\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Support:\n * - Web browsers\n * - Node 18 and higher (https://github.com/nodejs/node/commit/e4b1fb5e6422c1ff151234bb9de792d45dd88d87)\n */\nfunction getFromGlobal(): DOMExceptionConstructor | undefined {\n  const ctor = globals?.DOMException;\n  return isDOMExceptionConstructor(ctor) ? ctor : undefined;\n}\n\n/**\n * Support:\n * - All platforms\n */\nfunction createPolyfill(): DOMExceptionConstructor {\n  // eslint-disable-next-line @typescript-eslint/no-shadow\n  const ctor = function DOMException(this: DOMException, message?: string, name?: string) {\n    this.message = message || '';\n    this.name = name || 'Error';\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  } as any;\n  setFunctionName(ctor, 'DOMException');\n  ctor.prototype = Object.create(Error.prototype);\n  Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true });\n  return ctor;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nconst DOMException: DOMExceptionConstructor = getFromGlobal() || createPolyfill();\n\nexport { DOMException };\n","import { IsReadableStream, IsReadableStreamLocked, ReadableStream, ReadableStreamCancel } from '../readable-stream';\nimport { AcquireReadableStreamDefaultReader, ReadableStreamDefaultReaderRead } from './default-reader';\nimport { ReadableStreamReaderGenericRelease } from './generic-reader';\nimport {\n  AcquireWritableStreamDefaultWriter,\n  IsWritableStream,\n  IsWritableStreamLocked,\n  WritableStream,\n  WritableStreamAbort,\n  WritableStreamCloseQueuedOrInFlight,\n  WritableStreamDefaultWriterCloseWithErrorPropagation,\n  WritableStreamDefaultWriterRelease,\n  WritableStreamDefaultWriterWrite\n} from '../writable-stream';\nimport assert from '../../stub/assert';\nimport {\n  newPromise,\n  PerformPromiseThen,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  uponFulfillment,\n  uponPromise,\n  uponRejection\n} from '../helpers/webidl';\nimport { noop } from '../../utils';\nimport { type AbortSignal, isAbortSignal } from '../abort-signal';\nimport { DOMException } from '../../stub/dom-exception';\n\nexport function ReadableStreamPipeTo<T>(source: ReadableStream<T>,\n                                        dest: WritableStream<T>,\n                                        preventClose: boolean,\n                                        preventAbort: boolean,\n                                        preventCancel: boolean,\n                                        signal: AbortSignal | undefined): Promise<undefined> {\n  assert(IsReadableStream(source));\n  assert(IsWritableStream(dest));\n  assert(typeof preventClose === 'boolean');\n  assert(typeof preventAbort === 'boolean');\n  assert(typeof preventCancel === 'boolean');\n  assert(signal === undefined || isAbortSignal(signal));\n  assert(!IsReadableStreamLocked(source));\n  assert(!IsWritableStreamLocked(dest));\n\n  const reader = AcquireReadableStreamDefaultReader<T>(source);\n  const writer = AcquireWritableStreamDefaultWriter<T>(dest);\n\n  source._disturbed = true;\n\n  let shuttingDown = false;\n\n  // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n  let currentWrite = promiseResolvedWith<void>(undefined);\n\n  return newPromise((resolve, reject) => {\n    let abortAlgorithm: () => void;\n    if (signal !== undefined) {\n      abortAlgorithm = () => {\n        const error = signal.reason !== undefined ? signal.reason : new DOMException('Aborted', 'AbortError');\n        const actions: Array<() => Promise<void>> = [];\n        if (!preventAbort) {\n          actions.push(() => {\n            if (dest._state === 'writable') {\n              return WritableStreamAbort(dest, error);\n            }\n            return promiseResolvedWith(undefined);\n          });\n        }\n        if (!preventCancel) {\n          actions.push(() => {\n            if (source._state === 'readable') {\n              return ReadableStreamCancel(source, error);\n            }\n            return promiseResolvedWith(undefined);\n          });\n        }\n        shutdownWithAction(() => Promise.all(actions.map(action => action())), true, error);\n      };\n\n      if (signal.aborted) {\n        abortAlgorithm();\n        return;\n      }\n\n      signal.addEventListener('abort', abortAlgorithm);\n    }\n\n    // Using reader and writer, read all chunks from this and write them to dest\n    // - Backpressure must be enforced\n    // - Shutdown must stop all activity\n    function pipeLoop() {\n      return newPromise<void>((resolveLoop, rejectLoop) => {\n        function next(done: boolean) {\n          if (done) {\n            resolveLoop();\n          } else {\n            // Use `PerformPromiseThen` instead of `uponPromise` to avoid\n            // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers\n            PerformPromiseThen(pipeStep(), next, rejectLoop);\n          }\n        }\n\n        next(false);\n      });\n    }\n\n    function pipeStep(): Promise<boolean> {\n      if (shuttingDown) {\n        return promiseResolvedWith(true);\n      }\n\n      return PerformPromiseThen(writer._readyPromise, () => {\n        return newPromise<boolean>((resolveRead, rejectRead) => {\n          ReadableStreamDefaultReaderRead(\n            reader,\n            {\n              _chunkSteps: chunk => {\n                currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop);\n                resolveRead(false);\n              },\n              _closeSteps: () => resolveRead(true),\n              _errorSteps: rejectRead\n            }\n          );\n        });\n      });\n    }\n\n    // Errors must be propagated forward\n    isOrBecomesErrored(source, reader._closedPromise, storedError => {\n      if (!preventAbort) {\n        shutdownWithAction(() => WritableStreamAbort(dest, storedError), true, storedError);\n      } else {\n        shutdown(true, storedError);\n      }\n      return null;\n    });\n\n    // Errors must be propagated backward\n    isOrBecomesErrored(dest, writer._closedPromise, storedError => {\n      if (!preventCancel) {\n        shutdownWithAction(() => ReadableStreamCancel(source, storedError), true, storedError);\n      } else {\n        shutdown(true, storedError);\n      }\n      return null;\n    });\n\n    // Closing must be propagated forward\n    isOrBecomesClosed(source, reader._closedPromise, () => {\n      if (!preventClose) {\n        shutdownWithAction(() => WritableStreamDefaultWriterCloseWithErrorPropagation(writer));\n      } else {\n        shutdown();\n      }\n      return null;\n    });\n\n    // Closing must be propagated backward\n    if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') {\n      const destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n      if (!preventCancel) {\n        shutdownWithAction(() => ReadableStreamCancel(source, destClosed), true, destClosed);\n      } else {\n        shutdown(true, destClosed);\n      }\n    }\n\n    setPromiseIsHandledToTrue(pipeLoop());\n\n    function waitForWritesToFinish(): Promise<void> {\n      // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n      // for that too.\n      const oldCurrentWrite = currentWrite;\n      return PerformPromiseThen(\n        currentWrite,\n        () => oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined\n      );\n    }\n\n    function isOrBecomesErrored(stream: ReadableStream | WritableStream,\n                                promise: Promise<void>,\n                                action: (reason: any) => null) {\n      if (stream._state === 'errored') {\n        action(stream._storedError);\n      } else {\n        uponRejection(promise, action);\n      }\n    }\n\n    function isOrBecomesClosed(stream: ReadableStream | WritableStream, promise: Promise<void>, action: () => null) {\n      if (stream._state === 'closed') {\n        action();\n      } else {\n        uponFulfillment(promise, action);\n      }\n    }\n\n    function shutdownWithAction(action: () => Promise<unknown>, originalIsError?: boolean, originalError?: any) {\n      if (shuttingDown) {\n        return;\n      }\n      shuttingDown = true;\n\n      if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n        uponFulfillment(waitForWritesToFinish(), doTheRest);\n      } else {\n        doTheRest();\n      }\n\n      function doTheRest(): null {\n        uponPromise(\n          action(),\n          () => finalize(originalIsError, originalError),\n          newError => finalize(true, newError)\n        );\n        return null;\n      }\n    }\n\n    function shutdown(isError?: boolean, error?: any) {\n      if (shuttingDown) {\n        return;\n      }\n      shuttingDown = true;\n\n      if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n        uponFulfillment(waitForWritesToFinish(), () => finalize(isError, error));\n      } else {\n        finalize(isError, error);\n      }\n    }\n\n    function finalize(isError?: boolean, error?: any): null {\n      WritableStreamDefaultWriterRelease(writer);\n      ReadableStreamReaderGenericRelease(reader);\n\n      if (signal !== undefined) {\n        signal.removeEventListener('abort', abortAlgorithm);\n      }\n      if (isError) {\n        reject(error);\n      } else {\n        resolve(undefined);\n      }\n\n      return null;\n    }\n  });\n}\n","import type { QueuingStrategySizeCallback } from '../queuing-strategy';\nimport assert from '../../stub/assert';\nimport { DequeueValue, EnqueueValueWithSize, type QueuePair, ResetQueue } from '../abstract-ops/queue-with-sizes';\nimport {\n  ReadableStreamAddReadRequest,\n  ReadableStreamFulfillReadRequest,\n  ReadableStreamGetNumReadRequests,\n  type ReadRequest\n} from './default-reader';\nimport { SimpleQueue } from '../simple-queue';\nimport { IsReadableStreamLocked, ReadableStream, ReadableStreamClose, ReadableStreamError } from '../readable-stream';\nimport type { ValidatedUnderlyingSource } from './underlying-source';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport { CancelSteps, PullSteps, ReleaseSteps } from '../abstract-ops/internal-methods';\nimport { promiseResolvedWith, uponPromise } from '../helpers/webidl';\n\n/**\n * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue.\n *\n * @public\n */\nexport class ReadableStreamDefaultController<R> {\n  /** @internal */\n  _controlledReadableStream!: ReadableStream<R>;\n  /** @internal */\n  _queue!: SimpleQueue<QueuePair<R>>;\n  /** @internal */\n  _queueTotalSize!: number;\n  /** @internal */\n  _started!: boolean;\n  /** @internal */\n  _closeRequested!: boolean;\n  /** @internal */\n  _pullAgain!: boolean;\n  /** @internal */\n  _pulling !: boolean;\n  /** @internal */\n  _strategySizeAlgorithm!: QueuingStrategySizeCallback<R>;\n  /** @internal */\n  _strategyHWM!: number;\n  /** @internal */\n  _pullAlgorithm!: () => Promise<void>;\n  /** @internal */\n  _cancelAlgorithm!: (reason: any) => Promise<void>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n   * over-full. An underlying source ought to use this information to determine when and how to apply backpressure.\n   */\n  get desiredSize(): number | null {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('desiredSize');\n    }\n\n    return ReadableStreamDefaultControllerGetDesiredSize(this);\n  }\n\n  /**\n   * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n   * the stream, but once those are read, the stream will become closed.\n   */\n  close(): void {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('close');\n    }\n\n    if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n      throw new TypeError('The stream is not in a state that permits close');\n    }\n\n    ReadableStreamDefaultControllerClose(this);\n  }\n\n  /**\n   * Enqueues the given chunk `chunk` in the controlled readable stream.\n   */\n  enqueue(chunk: R): void;\n  enqueue(chunk: R = undefined!): void {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('enqueue');\n    }\n\n    if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n      throw new TypeError('The stream is not in a state that permits enqueue');\n    }\n\n    return ReadableStreamDefaultControllerEnqueue(this, chunk);\n  }\n\n  /**\n   * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n   */\n  error(e: any = undefined): void {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('error');\n    }\n\n    ReadableStreamDefaultControllerError(this, e);\n  }\n\n  /** @internal */\n  [CancelSteps](reason: any): Promise<void> {\n    ResetQueue(this);\n    const result = this._cancelAlgorithm(reason);\n    ReadableStreamDefaultControllerClearAlgorithms(this);\n    return result;\n  }\n\n  /** @internal */\n  [PullSteps](readRequest: ReadRequest<R>): void {\n    const stream = this._controlledReadableStream;\n\n    if (this._queue.length > 0) {\n      const chunk = DequeueValue(this);\n\n      if (this._closeRequested && this._queue.length === 0) {\n        ReadableStreamDefaultControllerClearAlgorithms(this);\n        ReadableStreamClose(stream);\n      } else {\n        ReadableStreamDefaultControllerCallPullIfNeeded(this);\n      }\n\n      readRequest._chunkSteps(chunk);\n    } else {\n      ReadableStreamAddReadRequest(stream, readRequest);\n      ReadableStreamDefaultControllerCallPullIfNeeded(this);\n    }\n  }\n\n  /** @internal */\n  [ReleaseSteps](): void {\n    // Do nothing.\n  }\n}\n\nObject.defineProperties(ReadableStreamDefaultController.prototype, {\n  close: { enumerable: true },\n  enqueue: { enumerable: true },\n  error: { enumerable: true },\n  desiredSize: { enumerable: true }\n});\nsetFunctionName(ReadableStreamDefaultController.prototype.close, 'close');\nsetFunctionName(ReadableStreamDefaultController.prototype.enqueue, 'enqueue');\nsetFunctionName(ReadableStreamDefaultController.prototype.error, 'error');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamDefaultController.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamDefaultController',\n    configurable: true\n  });\n}\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController<R = any>(x: any): x is ReadableStreamDefaultController<R> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamDefaultController;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller: ReadableStreamDefaultController<any>): void {\n  const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n  if (!shouldPull) {\n    return;\n  }\n\n  if (controller._pulling) {\n    controller._pullAgain = true;\n    return;\n  }\n\n  assert(!controller._pullAgain);\n\n  controller._pulling = true;\n\n  const pullPromise = controller._pullAlgorithm();\n  uponPromise(\n    pullPromise,\n    () => {\n      controller._pulling = false;\n\n      if (controller._pullAgain) {\n        controller._pullAgain = false;\n        ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      }\n\n      return null;\n    },\n    e => {\n      ReadableStreamDefaultControllerError(controller, e);\n      return null;\n    }\n  );\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller: ReadableStreamDefaultController<any>): boolean {\n  const stream = controller._controlledReadableStream;\n\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n    return false;\n  }\n\n  if (!controller._started) {\n    return false;\n  }\n\n  if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n  assert(desiredSize !== null);\n  if (desiredSize! > 0) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction ReadableStreamDefaultControllerClearAlgorithms(controller: ReadableStreamDefaultController<any>) {\n  controller._pullAlgorithm = undefined!;\n  controller._cancelAlgorithm = undefined!;\n  controller._strategySizeAlgorithm = undefined!;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nexport function ReadableStreamDefaultControllerClose(controller: ReadableStreamDefaultController<any>) {\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n    return;\n  }\n\n  const stream = controller._controlledReadableStream;\n\n  controller._closeRequested = true;\n\n  if (controller._queue.length === 0) {\n    ReadableStreamDefaultControllerClearAlgorithms(controller);\n    ReadableStreamClose(stream);\n  }\n}\n\nexport function ReadableStreamDefaultControllerEnqueue<R>(\n  controller: ReadableStreamDefaultController<R>,\n  chunk: R\n): void {\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n    return;\n  }\n\n  const stream = controller._controlledReadableStream;\n\n  if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n    ReadableStreamFulfillReadRequest(stream, chunk, false);\n  } else {\n    let chunkSize;\n    try {\n      chunkSize = controller._strategySizeAlgorithm(chunk);\n    } catch (chunkSizeE) {\n      ReadableStreamDefaultControllerError(controller, chunkSizeE);\n      throw chunkSizeE;\n    }\n\n    try {\n      EnqueueValueWithSize(controller, chunk, chunkSize);\n    } catch (enqueueE) {\n      ReadableStreamDefaultControllerError(controller, enqueueE);\n      throw enqueueE;\n    }\n  }\n\n  ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n}\n\nexport function ReadableStreamDefaultControllerError(controller: ReadableStreamDefaultController<any>, e: any) {\n  const stream = controller._controlledReadableStream;\n\n  if (stream._state !== 'readable') {\n    return;\n  }\n\n  ResetQueue(controller);\n\n  ReadableStreamDefaultControllerClearAlgorithms(controller);\n  ReadableStreamError(stream, e);\n}\n\nexport function ReadableStreamDefaultControllerGetDesiredSize(\n  controller: ReadableStreamDefaultController<any>\n): number | null {\n  const state = controller._controlledReadableStream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\n// This is used in the implementation of TransformStream.\nexport function ReadableStreamDefaultControllerHasBackpressure(\n  controller: ReadableStreamDefaultController<any>\n): boolean {\n  if (ReadableStreamDefaultControllerShouldCallPull(controller)) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function ReadableStreamDefaultControllerCanCloseOrEnqueue(\n  controller: ReadableStreamDefaultController<any>\n): boolean {\n  const state = controller._controlledReadableStream._state;\n\n  if (!controller._closeRequested && state === 'readable') {\n    return true;\n  }\n\n  return false;\n}\n\nexport function SetUpReadableStreamDefaultController<R>(stream: ReadableStream<R>,\n                                                        controller: ReadableStreamDefaultController<R>,\n                                                        startAlgorithm: () => void | PromiseLike<void>,\n                                                        pullAlgorithm: () => Promise<void>,\n                                                        cancelAlgorithm: (reason: any) => Promise<void>,\n                                                        highWaterMark: number,\n                                                        sizeAlgorithm: QueuingStrategySizeCallback<R>) {\n  assert(stream._readableStreamController === undefined);\n\n  controller._controlledReadableStream = stream;\n\n  controller._queue = undefined!;\n  controller._queueTotalSize = undefined!;\n  ResetQueue(controller);\n\n  controller._started = false;\n  controller._closeRequested = false;\n  controller._pullAgain = false;\n  controller._pulling = false;\n\n  controller._strategySizeAlgorithm = sizeAlgorithm;\n  controller._strategyHWM = highWaterMark;\n\n  controller._pullAlgorithm = pullAlgorithm;\n  controller._cancelAlgorithm = cancelAlgorithm;\n\n  stream._readableStreamController = controller;\n\n  const startResult = startAlgorithm();\n  uponPromise(\n    promiseResolvedWith(startResult),\n    () => {\n      controller._started = true;\n\n      assert(!controller._pulling);\n      assert(!controller._pullAgain);\n\n      ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      return null;\n    },\n    r => {\n      ReadableStreamDefaultControllerError(controller, r);\n      return null;\n    }\n  );\n}\n\nexport function SetUpReadableStreamDefaultControllerFromUnderlyingSource<R>(\n  stream: ReadableStream<R>,\n  underlyingSource: ValidatedUnderlyingSource<R>,\n  highWaterMark: number,\n  sizeAlgorithm: QueuingStrategySizeCallback<R>\n) {\n  const controller: ReadableStreamDefaultController<R> = Object.create(ReadableStreamDefaultController.prototype);\n\n  let startAlgorithm: () => void | PromiseLike<void>;\n  let pullAlgorithm: () => Promise<void>;\n  let cancelAlgorithm: (reason: any) => Promise<void>;\n\n  if (underlyingSource.start !== undefined) {\n    startAlgorithm = () => underlyingSource.start!(controller);\n  } else {\n    startAlgorithm = () => undefined;\n  }\n  if (underlyingSource.pull !== undefined) {\n    pullAlgorithm = () => underlyingSource.pull!(controller);\n  } else {\n    pullAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingSource.cancel !== undefined) {\n    cancelAlgorithm = reason => underlyingSource.cancel!(reason);\n  } else {\n    cancelAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  SetUpReadableStreamDefaultController(\n    stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm\n  );\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamDefaultController.prototype.${name} can only be used on a ReadableStreamDefaultController`);\n}\n","import {\n  CreateReadableByteStream,\n  CreateReadableStream,\n  type DefaultReadableStream,\n  IsReadableStream,\n  type ReadableByteStream,\n  ReadableStream,\n  ReadableStreamCancel,\n  type ReadableStreamReader\n} from '../readable-stream';\nimport { ReadableStreamReaderGenericRelease } from './generic-reader';\nimport {\n  AcquireReadableStreamDefaultReader,\n  IsReadableStreamDefaultReader,\n  ReadableStreamDefaultReaderRead,\n  type ReadRequest\n} from './default-reader';\nimport {\n  AcquireReadableStreamBYOBReader,\n  IsReadableStreamBYOBReader,\n  ReadableStreamBYOBReaderRead,\n  type ReadIntoRequest\n} from './byob-reader';\nimport assert from '../../stub/assert';\nimport { newPromise, promiseResolvedWith, queueMicrotask, uponRejection } from '../helpers/webidl';\nimport {\n  ReadableStreamDefaultControllerClose,\n  ReadableStreamDefaultControllerEnqueue,\n  ReadableStreamDefaultControllerError\n} from './default-controller';\nimport {\n  IsReadableByteStreamController,\n  ReadableByteStreamControllerClose,\n  ReadableByteStreamControllerEnqueue,\n  ReadableByteStreamControllerError,\n  ReadableByteStreamControllerGetBYOBRequest,\n  ReadableByteStreamControllerRespond,\n  ReadableByteStreamControllerRespondWithNewView\n} from './byte-stream-controller';\nimport { CreateArrayFromList } from '../abstract-ops/ecmascript';\nimport { CloneAsUint8Array } from '../abstract-ops/miscellaneous';\nimport type { NonShared } from '../helpers/array-buffer-view';\n\nexport function ReadableStreamTee<R>(stream: ReadableStream<R>,\n                                     cloneForBranch2: boolean): [ReadableStream<R>, ReadableStream<R>] {\n  assert(IsReadableStream(stream));\n  assert(typeof cloneForBranch2 === 'boolean');\n  if (IsReadableByteStreamController(stream._readableStreamController)) {\n    return ReadableByteStreamTee(stream as unknown as ReadableByteStream) as\n      unknown as [ReadableStream<R>, ReadableStream<R>];\n  }\n  return ReadableStreamDefaultTee(stream, cloneForBranch2);\n}\n\nexport function ReadableStreamDefaultTee<R>(\n  stream: ReadableStream<R>,\n  cloneForBranch2: boolean\n): [DefaultReadableStream<R>, DefaultReadableStream<R>] {\n  assert(IsReadableStream(stream));\n  assert(typeof cloneForBranch2 === 'boolean');\n\n  const reader = AcquireReadableStreamDefaultReader<R>(stream);\n\n  let reading = false;\n  let readAgain = false;\n  let canceled1 = false;\n  let canceled2 = false;\n  let reason1: any;\n  let reason2: any;\n  let branch1: DefaultReadableStream<R>;\n  let branch2: DefaultReadableStream<R>;\n\n  let resolveCancelPromise: (value: undefined | Promise<undefined>) => void;\n  const cancelPromise = newPromise<undefined>(resolve => {\n    resolveCancelPromise = resolve;\n  });\n\n  function pullAlgorithm(): Promise<void> {\n    if (reading) {\n      readAgain = true;\n      return promiseResolvedWith(undefined);\n    }\n\n    reading = true;\n\n    const readRequest: ReadRequest<R> = {\n      _chunkSteps: chunk => {\n        // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n        // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n        // successful synchronously-available reads get ahead of asynchronously-available errors.\n        queueMicrotask(() => {\n          readAgain = false;\n          const chunk1 = chunk;\n          const chunk2 = chunk;\n\n          // There is no way to access the cloning code right now in the reference implementation.\n          // If we add one then we'll need an implementation for serializable objects.\n          // if (!canceled2 && cloneForBranch2) {\n          //   chunk2 = StructuredDeserialize(StructuredSerialize(chunk2));\n          // }\n\n          if (!canceled1) {\n            ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1);\n          }\n          if (!canceled2) {\n            ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2);\n          }\n\n          reading = false;\n          if (readAgain) {\n            pullAlgorithm();\n          }\n        });\n      },\n      _closeSteps: () => {\n        reading = false;\n        if (!canceled1) {\n          ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n        }\n        if (!canceled2) {\n          ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n        }\n\n        if (!canceled1 || !canceled2) {\n          resolveCancelPromise(undefined);\n        }\n      },\n      _errorSteps: () => {\n        reading = false;\n      }\n    };\n    ReadableStreamDefaultReaderRead(reader, readRequest);\n\n    return promiseResolvedWith(undefined);\n  }\n\n  function cancel1Algorithm(reason: any): Promise<void> {\n    canceled1 = true;\n    reason1 = reason;\n    if (canceled2) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function cancel2Algorithm(reason: any): Promise<void> {\n    canceled2 = true;\n    reason2 = reason;\n    if (canceled1) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function startAlgorithm() {\n    // do nothing\n  }\n\n  branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n  branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n\n  uponRejection(reader._closedPromise, (r: any) => {\n    ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n    ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n    if (!canceled1 || !canceled2) {\n      resolveCancelPromise(undefined);\n    }\n    return null;\n  });\n\n  return [branch1, branch2];\n}\n\nexport function ReadableByteStreamTee(stream: ReadableByteStream): [ReadableByteStream, ReadableByteStream] {\n  assert(IsReadableStream(stream));\n  assert(IsReadableByteStreamController(stream._readableStreamController));\n\n  let reader: ReadableStreamReader<NonShared<Uint8Array>> = AcquireReadableStreamDefaultReader(stream);\n  let reading = false;\n  let readAgainForBranch1 = false;\n  let readAgainForBranch2 = false;\n  let canceled1 = false;\n  let canceled2 = false;\n  let reason1: any;\n  let reason2: any;\n  let branch1: ReadableByteStream;\n  let branch2: ReadableByteStream;\n\n  let resolveCancelPromise: (value: undefined | Promise<undefined>) => void;\n  const cancelPromise = newPromise<void>(resolve => {\n    resolveCancelPromise = resolve;\n  });\n\n  function forwardReaderError(thisReader: ReadableStreamReader<NonShared<Uint8Array>>) {\n    uponRejection(thisReader._closedPromise, r => {\n      if (thisReader !== reader) {\n        return null;\n      }\n      ReadableByteStreamControllerError(branch1._readableStreamController, r);\n      ReadableByteStreamControllerError(branch2._readableStreamController, r);\n      if (!canceled1 || !canceled2) {\n        resolveCancelPromise(undefined);\n      }\n      return null;\n    });\n  }\n\n  function pullWithDefaultReader() {\n    if (IsReadableStreamBYOBReader(reader)) {\n      assert(reader._readIntoRequests.length === 0);\n      ReadableStreamReaderGenericRelease(reader);\n\n      reader = AcquireReadableStreamDefaultReader(stream);\n      forwardReaderError(reader);\n    }\n\n    const readRequest: ReadRequest<NonShared<Uint8Array>> = {\n      _chunkSteps: chunk => {\n        // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n        // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n        // successful synchronously-available reads get ahead of asynchronously-available errors.\n        queueMicrotask(() => {\n          readAgainForBranch1 = false;\n          readAgainForBranch2 = false;\n\n          const chunk1 = chunk;\n          let chunk2 = chunk;\n          if (!canceled1 && !canceled2) {\n            try {\n              chunk2 = CloneAsUint8Array(chunk);\n            } catch (cloneE) {\n              ReadableByteStreamControllerError(branch1._readableStreamController, cloneE);\n              ReadableByteStreamControllerError(branch2._readableStreamController, cloneE);\n              resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n              return;\n            }\n          }\n\n          if (!canceled1) {\n            ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1);\n          }\n          if (!canceled2) {\n            ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2);\n          }\n\n          reading = false;\n          if (readAgainForBranch1) {\n            pull1Algorithm();\n          } else if (readAgainForBranch2) {\n            pull2Algorithm();\n          }\n        });\n      },\n      _closeSteps: () => {\n        reading = false;\n        if (!canceled1) {\n          ReadableByteStreamControllerClose(branch1._readableStreamController);\n        }\n        if (!canceled2) {\n          ReadableByteStreamControllerClose(branch2._readableStreamController);\n        }\n        if (branch1._readableStreamController._pendingPullIntos.length > 0) {\n          ReadableByteStreamControllerRespond(branch1._readableStreamController, 0);\n        }\n        if (branch2._readableStreamController._pendingPullIntos.length > 0) {\n          ReadableByteStreamControllerRespond(branch2._readableStreamController, 0);\n        }\n        if (!canceled1 || !canceled2) {\n          resolveCancelPromise(undefined);\n        }\n      },\n      _errorSteps: () => {\n        reading = false;\n      }\n    };\n    ReadableStreamDefaultReaderRead(reader, readRequest);\n  }\n\n  function pullWithBYOBReader(view: NonShared<ArrayBufferView>, forBranch2: boolean) {\n    if (IsReadableStreamDefaultReader<NonShared<Uint8Array>>(reader)) {\n      assert(reader._readRequests.length === 0);\n      ReadableStreamReaderGenericRelease(reader);\n\n      reader = AcquireReadableStreamBYOBReader(stream);\n      forwardReaderError(reader);\n    }\n\n    const byobBranch = forBranch2 ? branch2 : branch1;\n    const otherBranch = forBranch2 ? branch1 : branch2;\n\n    const readIntoRequest: ReadIntoRequest<NonShared<ArrayBufferView>> = {\n      _chunkSteps: chunk => {\n        // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n        // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n        // successful synchronously-available reads get ahead of asynchronously-available errors.\n        queueMicrotask(() => {\n          readAgainForBranch1 = false;\n          readAgainForBranch2 = false;\n\n          const byobCanceled = forBranch2 ? canceled2 : canceled1;\n          const otherCanceled = forBranch2 ? canceled1 : canceled2;\n\n          if (!otherCanceled) {\n            let clonedChunk;\n            try {\n              clonedChunk = CloneAsUint8Array(chunk);\n            } catch (cloneE) {\n              ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE);\n              ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE);\n              resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n              return;\n            }\n            if (!byobCanceled) {\n              ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n            }\n            ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk);\n          } else if (!byobCanceled) {\n            ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n          }\n\n          reading = false;\n          if (readAgainForBranch1) {\n            pull1Algorithm();\n          } else if (readAgainForBranch2) {\n            pull2Algorithm();\n          }\n        });\n      },\n      _closeSteps: chunk => {\n        reading = false;\n\n        const byobCanceled = forBranch2 ? canceled2 : canceled1;\n        const otherCanceled = forBranch2 ? canceled1 : canceled2;\n\n        if (!byobCanceled) {\n          ReadableByteStreamControllerClose(byobBranch._readableStreamController);\n        }\n        if (!otherCanceled) {\n          ReadableByteStreamControllerClose(otherBranch._readableStreamController);\n        }\n\n        if (chunk !== undefined) {\n          assert(chunk.byteLength === 0);\n\n          if (!byobCanceled) {\n            ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n          }\n          if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) {\n            ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0);\n          }\n        }\n\n        if (!byobCanceled || !otherCanceled) {\n          resolveCancelPromise(undefined);\n        }\n      },\n      _errorSteps: () => {\n        reading = false;\n      }\n    };\n    ReadableStreamBYOBReaderRead(reader, view, 1, readIntoRequest);\n  }\n\n  function pull1Algorithm(): Promise<void> {\n    if (reading) {\n      readAgainForBranch1 = true;\n      return promiseResolvedWith(undefined);\n    }\n\n    reading = true;\n\n    const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController);\n    if (byobRequest === null) {\n      pullWithDefaultReader();\n    } else {\n      pullWithBYOBReader(byobRequest._view!, false);\n    }\n\n    return promiseResolvedWith(undefined);\n  }\n\n  function pull2Algorithm(): Promise<void> {\n    if (reading) {\n      readAgainForBranch2 = true;\n      return promiseResolvedWith(undefined);\n    }\n\n    reading = true;\n\n    const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController);\n    if (byobRequest === null) {\n      pullWithDefaultReader();\n    } else {\n      pullWithBYOBReader(byobRequest._view!, true);\n    }\n\n    return promiseResolvedWith(undefined);\n  }\n\n  function cancel1Algorithm(reason: any): Promise<void> {\n    canceled1 = true;\n    reason1 = reason;\n    if (canceled2) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function cancel2Algorithm(reason: any): Promise<void> {\n    canceled2 = true;\n    reason2 = reason;\n    if (canceled1) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function startAlgorithm(): void {\n    return;\n  }\n\n  branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm);\n  branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm);\n\n  forwardReaderError(reader);\n\n  return [branch1, branch2];\n}\n","import { typeIsObject } from '../helpers/miscellaneous';\nimport type { ReadableStreamDefaultReadResult } from './default-reader';\n\n/**\n * A common interface for a `ReadadableStream` implementation.\n *\n * @public\n */\nexport interface ReadableStreamLike<R = any> {\n  readonly locked: boolean;\n\n  getReader(): ReadableStreamDefaultReaderLike<R>;\n}\n\n/**\n * A common interface for a `ReadableStreamDefaultReader` implementation.\n *\n * @public\n */\nexport interface ReadableStreamDefaultReaderLike<R = any> {\n  readonly closed: Promise<undefined>;\n\n  cancel(reason?: any): Promise<void>;\n\n  read(): Promise<ReadableStreamDefaultReadResult<R>>;\n\n  releaseLock(): void;\n}\n\nexport function isReadableStreamLike<R>(stream: unknown): stream is ReadableStreamLike<R> {\n  return typeIsObject(stream) && typeof (stream as ReadableStreamLike<R>).getReader !== 'undefined';\n}\n","import { CreateReadableStream, type DefaultReadableStream } from '../readable-stream';\nimport {\n  isReadableStreamLike,\n  type ReadableStreamDefaultReaderLike,\n  type ReadableStreamLike\n} from './readable-stream-like';\nimport { ReadableStreamDefaultControllerClose, ReadableStreamDefaultControllerEnqueue } from './default-controller';\nimport { GetIterator, GetMethod, IteratorComplete, IteratorNext, IteratorValue } from '../abstract-ops/ecmascript';\nimport { promiseRejectedWith, promiseResolvedWith, reflectCall, transformPromiseWith } from '../helpers/webidl';\nimport { typeIsObject } from '../helpers/miscellaneous';\nimport { noop } from '../../utils';\n\nexport function ReadableStreamFrom<R>(\n  source: Iterable<R> | AsyncIterable<R> | ReadableStreamLike<R>\n): DefaultReadableStream<R> {\n  if (isReadableStreamLike(source)) {\n    return ReadableStreamFromDefaultReader(source.getReader());\n  }\n  return ReadableStreamFromIterable(source);\n}\n\nexport function ReadableStreamFromIterable<R>(asyncIterable: Iterable<R> | AsyncIterable<R>): DefaultReadableStream<R> {\n  let stream: DefaultReadableStream<R>;\n  const iteratorRecord = GetIterator(asyncIterable, 'async');\n\n  const startAlgorithm = noop;\n\n  function pullAlgorithm(): Promise<void> {\n    let nextResult;\n    try {\n      nextResult = IteratorNext(iteratorRecord);\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    const nextPromise = promiseResolvedWith(nextResult);\n    return transformPromiseWith(nextPromise, iterResult => {\n      if (!typeIsObject(iterResult)) {\n        throw new TypeError('The promise returned by the iterator.next() method must fulfill with an object');\n      }\n      const done = IteratorComplete(iterResult);\n      if (done) {\n        ReadableStreamDefaultControllerClose(stream._readableStreamController);\n      } else {\n        const value = IteratorValue(iterResult);\n        ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value);\n      }\n    });\n  }\n\n  function cancelAlgorithm(reason: any): Promise<void> {\n    const iterator = iteratorRecord.iterator;\n    let returnMethod: (typeof iterator)['return'] | undefined;\n    try {\n      returnMethod = GetMethod(iterator, 'return');\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    if (returnMethod === undefined) {\n      return promiseResolvedWith(undefined);\n    }\n    let returnResult: IteratorResult<R> | Promise<IteratorResult<R>>;\n    try {\n      returnResult = reflectCall(returnMethod, iterator, [reason]);\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    const returnPromise = promiseResolvedWith(returnResult);\n    return transformPromiseWith(returnPromise, iterResult => {\n      if (!typeIsObject(iterResult)) {\n        throw new TypeError('The promise returned by the iterator.return() method must fulfill with an object');\n      }\n      return undefined;\n    });\n  }\n\n  stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);\n  return stream;\n}\n\nexport function ReadableStreamFromDefaultReader<R>(\n  reader: ReadableStreamDefaultReaderLike<R>\n): DefaultReadableStream<R> {\n  let stream: DefaultReadableStream<R>;\n\n  const startAlgorithm = noop;\n\n  function pullAlgorithm(): Promise<void> {\n    let readPromise;\n    try {\n      readPromise = reader.read();\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    return transformPromiseWith(readPromise, readResult => {\n      if (!typeIsObject(readResult)) {\n        throw new TypeError('The promise returned by the reader.read() method must fulfill with an object');\n      }\n      if (readResult.done) {\n        ReadableStreamDefaultControllerClose(stream._readableStreamController);\n      } else {\n        const value = readResult.value;\n        ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value);\n      }\n    });\n  }\n\n  function cancelAlgorithm(reason: any): Promise<void> {\n    try {\n      return promiseResolvedWith(reader.cancel(reason));\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n  }\n\n  stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);\n  return stream;\n}\n","import { assertDictionary, assertFunction, convertUnsignedLongLongWithEnforceRange } from './basic';\nimport type {\n  ReadableStreamController,\n  UnderlyingByteSource,\n  UnderlyingDefaultOrByteSource,\n  UnderlyingDefaultOrByteSourcePullCallback,\n  UnderlyingDefaultOrByteSourceStartCallback,\n  UnderlyingSource,\n  UnderlyingSourceCancelCallback,\n  ValidatedUnderlyingDefaultOrByteSource\n} from '../readable-stream/underlying-source';\nimport { promiseCall, reflectCall } from '../helpers/webidl';\n\nexport function convertUnderlyingDefaultOrByteSource<R>(\n  source: UnderlyingSource<R> | UnderlyingByteSource | null,\n  context: string\n): ValidatedUnderlyingDefaultOrByteSource<R> {\n  assertDictionary(source, context);\n  const original = source as (UnderlyingDefaultOrByteSource<R> | null);\n  const autoAllocateChunkSize = original?.autoAllocateChunkSize;\n  const cancel = original?.cancel;\n  const pull = original?.pull;\n  const start = original?.start;\n  const type = original?.type;\n  return {\n    autoAllocateChunkSize: autoAllocateChunkSize === undefined ?\n      undefined :\n      convertUnsignedLongLongWithEnforceRange(\n        autoAllocateChunkSize,\n        `${context} has member 'autoAllocateChunkSize' that`\n      ),\n    cancel: cancel === undefined ?\n      undefined :\n      convertUnderlyingSourceCancelCallback(cancel, original!, `${context} has member 'cancel' that`),\n    pull: pull === undefined ?\n      undefined :\n      convertUnderlyingSourcePullCallback(pull, original!, `${context} has member 'pull' that`),\n    start: start === undefined ?\n      undefined :\n      convertUnderlyingSourceStartCallback(start, original!, `${context} has member 'start' that`),\n    type: type === undefined ? undefined : convertReadableStreamType(type, `${context} has member 'type' that`)\n  };\n}\n\nfunction convertUnderlyingSourceCancelCallback(\n  fn: UnderlyingSourceCancelCallback,\n  original: UnderlyingDefaultOrByteSource,\n  context: string\n): (reason: any) => Promise<void> {\n  assertFunction(fn, context);\n  return (reason: any) => promiseCall(fn, original, [reason]);\n}\n\nfunction convertUnderlyingSourcePullCallback<R>(\n  fn: UnderlyingDefaultOrByteSourcePullCallback<R>,\n  original: UnderlyingDefaultOrByteSource<R>,\n  context: string\n): (controller: ReadableStreamController<R>) => Promise<void> {\n  assertFunction(fn, context);\n  return (controller: ReadableStreamController<R>) => promiseCall(fn, original, [controller]);\n}\n\nfunction convertUnderlyingSourceStartCallback<R>(\n  fn: UnderlyingDefaultOrByteSourceStartCallback<R>,\n  original: UnderlyingDefaultOrByteSource<R>,\n  context: string\n): UnderlyingDefaultOrByteSourceStartCallback<R> {\n  assertFunction(fn, context);\n  return (controller: ReadableStreamController<R>) => reflectCall(fn, original, [controller]);\n}\n\nfunction convertReadableStreamType(type: string, context: string): 'bytes' {\n  type = `${type}`;\n  if (type !== 'bytes') {\n    throw new TypeError(`${context} '${type}' is not a valid enumeration value for ReadableStreamType`);\n  }\n  return type;\n}\n","import { assertDictionary } from './basic';\nimport type {\n  ReadableStreamIteratorOptions,\n  ValidatedReadableStreamIteratorOptions\n} from '../readable-stream/iterator-options';\n\nexport function convertIteratorOptions(options: ReadableStreamIteratorOptions | null | undefined,\n                                       context: string): ValidatedReadableStreamIteratorOptions {\n  assertDictionary(options, context);\n  const preventCancel = options?.preventCancel;\n  return { preventCancel: Boolean(preventCancel) };\n}\n","import { assertDictionary } from './basic';\nimport type { StreamPipeOptions, ValidatedStreamPipeOptions } from '../readable-stream/pipe-options';\nimport { type AbortSignal, isAbortSignal } from '../abort-signal';\n\nexport function convertPipeOptions(options: StreamPipeOptions | null | undefined,\n                                   context: string): ValidatedStreamPipeOptions {\n  assertDictionary(options, context);\n  const preventAbort = options?.preventAbort;\n  const preventCancel = options?.preventCancel;\n  const preventClose = options?.preventClose;\n  const signal = options?.signal;\n  if (signal !== undefined) {\n    assertAbortSignal(signal, `${context} has member 'signal' that`);\n  }\n  return {\n    preventAbort: Boolean(preventAbort),\n    preventCancel: Boolean(preventCancel),\n    preventClose: Boolean(preventClose),\n    signal\n  };\n}\n\nfunction assertAbortSignal(signal: unknown, context: string): asserts signal is AbortSignal {\n  if (!isAbortSignal(signal)) {\n    throw new TypeError(`${context} is not an AbortSignal.`);\n  }\n}\n","import { assertDictionary, assertRequiredField } from './basic';\nimport { ReadableStream } from '../readable-stream';\nimport { WritableStream } from '../writable-stream';\nimport { assertReadableStream } from './readable-stream';\nimport { assertWritableStream } from './writable-stream';\n\nexport function convertReadableWritablePair<RS extends ReadableStream, WS extends WritableStream>(\n  pair: { readable: RS; writable: WS } | null | undefined,\n  context: string\n): { readable: RS; writable: WS } {\n  assertDictionary(pair, context);\n\n  const readable = pair?.readable;\n  assertRequiredField(readable, 'readable', 'ReadableWritablePair');\n  assertReadableStream(readable, `${context} has member 'readable' that`);\n\n  const writable = pair?.writable;\n  assertRequiredField(writable, 'writable', 'ReadableWritablePair');\n  assertWritableStream(writable, `${context} has member 'writable' that`);\n\n  return { readable, writable };\n}\n","import assert from '../stub/assert';\nimport {\n  promiseRejectedWith,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  transformPromiseWith\n} from './helpers/webidl';\nimport type { QueuingStrategy, QueuingStrategySizeCallback } from './queuing-strategy';\nimport { AcquireReadableStreamAsyncIterator, type ReadableStreamAsyncIterator } from './readable-stream/async-iterator';\nimport { defaultReaderClosedPromiseReject, defaultReaderClosedPromiseResolve } from './readable-stream/generic-reader';\nimport {\n  AcquireReadableStreamDefaultReader,\n  IsReadableStreamDefaultReader,\n  ReadableStreamDefaultReader,\n  ReadableStreamDefaultReaderErrorReadRequests,\n  type ReadableStreamDefaultReadResult\n} from './readable-stream/default-reader';\nimport {\n  AcquireReadableStreamBYOBReader,\n  IsReadableStreamBYOBReader,\n  ReadableStreamBYOBReader,\n  ReadableStreamBYOBReaderErrorReadIntoRequests,\n  type ReadableStreamBYOBReadResult\n} from './readable-stream/byob-reader';\nimport { ReadableStreamPipeTo } from './readable-stream/pipe';\nimport { ReadableStreamTee } from './readable-stream/tee';\nimport { ReadableStreamFrom } from './readable-stream/from';\nimport { IsWritableStream, IsWritableStreamLocked, WritableStream } from './writable-stream';\nimport { SimpleQueue } from './simple-queue';\nimport {\n  ReadableByteStreamController,\n  ReadableStreamBYOBRequest,\n  SetUpReadableByteStreamController,\n  SetUpReadableByteStreamControllerFromUnderlyingSource\n} from './readable-stream/byte-stream-controller';\nimport {\n  ReadableStreamDefaultController,\n  SetUpReadableStreamDefaultController,\n  SetUpReadableStreamDefaultControllerFromUnderlyingSource\n} from './readable-stream/default-controller';\nimport type {\n  UnderlyingByteSource,\n  UnderlyingByteSourcePullCallback,\n  UnderlyingByteSourceStartCallback,\n  UnderlyingSource,\n  UnderlyingSourceCancelCallback,\n  UnderlyingSourcePullCallback,\n  UnderlyingSourceStartCallback\n} from './readable-stream/underlying-source';\nimport { noop } from '../utils';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { CreateArrayFromList, SymbolAsyncIterator } from './abstract-ops/ecmascript';\nimport { CancelSteps } from './abstract-ops/internal-methods';\nimport { IsNonNegativeNumber } from './abstract-ops/miscellaneous';\nimport { assertObject, assertRequiredArgument } from './validators/basic';\nimport { convertQueuingStrategy } from './validators/queuing-strategy';\nimport { ExtractHighWaterMark, ExtractSizeAlgorithm } from './abstract-ops/queuing-strategy';\nimport { convertUnderlyingDefaultOrByteSource } from './validators/underlying-source';\nimport type {\n  ReadableStreamBYOBReaderReadOptions,\n  ReadableStreamGetReaderOptions\n} from './readable-stream/reader-options';\nimport { convertReaderOptions } from './validators/reader-options';\nimport type { StreamPipeOptions, ValidatedStreamPipeOptions } from './readable-stream/pipe-options';\nimport type { ReadableStreamIteratorOptions } from './readable-stream/iterator-options';\nimport { convertIteratorOptions } from './validators/iterator-options';\nimport { convertPipeOptions } from './validators/pipe-options';\nimport type { ReadableWritablePair } from './readable-stream/readable-writable-pair';\nimport { convertReadableWritablePair } from './validators/readable-writable-pair';\nimport type { ReadableStreamDefaultReaderLike, ReadableStreamLike } from './readable-stream/readable-stream-like';\nimport type { NonShared } from './helpers/array-buffer-view';\n\nexport type DefaultReadableStream<R = any> = ReadableStream<R> & {\n  _readableStreamController: ReadableStreamDefaultController<R>\n};\n\nexport type ReadableByteStream = ReadableStream<NonShared<Uint8Array>> & {\n  _readableStreamController: ReadableByteStreamController\n};\n\ntype ReadableStreamState = 'readable' | 'closed' | 'errored';\n\n/**\n * A readable stream represents a source of data, from which you can read.\n *\n * @public\n */\nexport class ReadableStream<R = any> implements AsyncIterable<R> {\n  /** @internal */\n  _state!: ReadableStreamState;\n  /** @internal */\n  _reader: ReadableStreamReader<R> | undefined;\n  /** @internal */\n  _storedError: any;\n  /** @internal */\n  _disturbed!: boolean;\n  /** @internal */\n  _readableStreamController!: ReadableStreamDefaultController<R> | ReadableByteStreamController;\n\n  constructor(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number; size?: undefined });\n  constructor(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>);\n  constructor(rawUnderlyingSource: UnderlyingSource<R> | UnderlyingByteSource | null | undefined = {},\n              rawStrategy: QueuingStrategy<R> | null | undefined = {}) {\n    if (rawUnderlyingSource === undefined) {\n      rawUnderlyingSource = null;\n    } else {\n      assertObject(rawUnderlyingSource, 'First parameter');\n    }\n\n    const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n    const underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter');\n\n    InitializeReadableStream(this);\n\n    if (underlyingSource.type === 'bytes') {\n      if (strategy.size !== undefined) {\n        throw new RangeError('The strategy for a byte stream cannot have a size function');\n      }\n      const highWaterMark = ExtractHighWaterMark(strategy, 0);\n      SetUpReadableByteStreamControllerFromUnderlyingSource(\n        this as unknown as ReadableByteStream,\n        underlyingSource,\n        highWaterMark\n      );\n    } else {\n      assert(underlyingSource.type === undefined);\n      const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n      const highWaterMark = ExtractHighWaterMark(strategy, 1);\n      SetUpReadableStreamDefaultControllerFromUnderlyingSource(\n        this,\n        underlyingSource,\n        highWaterMark,\n        sizeAlgorithm\n      );\n    }\n  }\n\n  /**\n   * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.\n   */\n  get locked(): boolean {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('locked');\n    }\n\n    return IsReadableStreamLocked(this);\n  }\n\n  /**\n   * Cancels the stream, signaling a loss of interest in the stream by a consumer.\n   *\n   * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()}\n   * method, which might or might not use it.\n   */\n  cancel(reason: any = undefined): Promise<void> {\n    if (!IsReadableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('cancel'));\n    }\n\n    if (IsReadableStreamLocked(this)) {\n      return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n    }\n\n    return ReadableStreamCancel(this, reason);\n  }\n\n  /**\n   * Creates a {@link ReadableStreamBYOBReader} and locks the stream to the new reader.\n   *\n   * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams,\n   * i.e. streams which were constructed specifically with the ability to handle \"bring your own buffer\" reading.\n   * The returned BYOB reader provides the ability to directly read individual chunks from the stream via its\n   * {@link ReadableStreamBYOBReader.read | read()} method, into developer-supplied buffers, allowing more precise\n   * control over allocation.\n   */\n  getReader({ mode }: { mode: 'byob' }): ReadableStreamBYOBReader;\n  /**\n   * Creates a {@link ReadableStreamDefaultReader} and locks the stream to the new reader.\n   * While the stream is locked, no other reader can be acquired until this one is released.\n   *\n   * This functionality is especially useful for creating abstractions that desire the ability to consume a stream\n   * in its entirety. By getting a reader for the stream, you can ensure nobody else can interleave reads with yours\n   * or cancel the stream, which would interfere with your abstraction.\n   */\n  getReader(): ReadableStreamDefaultReader<R>;\n  getReader(\n    rawOptions: ReadableStreamGetReaderOptions | null | undefined = undefined\n  ): ReadableStreamDefaultReader<R> | ReadableStreamBYOBReader {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('getReader');\n    }\n\n    const options = convertReaderOptions(rawOptions, 'First parameter');\n\n    if (options.mode === undefined) {\n      return AcquireReadableStreamDefaultReader(this);\n    }\n\n    assert(options.mode === 'byob');\n    return AcquireReadableStreamBYOBReader(this as unknown as ReadableByteStream);\n  }\n\n  /**\n   * Provides a convenient, chainable way of piping this readable stream through a transform stream\n   * (or any other `{ writable, readable }` pair). It simply {@link ReadableStream.pipeTo | pipes} the stream\n   * into the writable side of the supplied pair, and returns the readable side for further use.\n   *\n   * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n   */\n  pipeThrough<RS extends ReadableStream>(\n    transform: { readable: RS; writable: WritableStream<R> },\n    options?: StreamPipeOptions\n  ): RS;\n  pipeThrough<RS extends ReadableStream>(\n    rawTransform: { readable: RS; writable: WritableStream<R> } | null | undefined,\n    rawOptions: StreamPipeOptions | null | undefined = {}\n  ): RS {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('pipeThrough');\n    }\n    assertRequiredArgument(rawTransform, 1, 'pipeThrough');\n\n    const transform = convertReadableWritablePair(rawTransform, 'First parameter');\n    const options = convertPipeOptions(rawOptions, 'Second parameter');\n\n    if (IsReadableStreamLocked(this)) {\n      throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n    }\n    if (IsWritableStreamLocked(transform.writable)) {\n      throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n    }\n\n    const promise = ReadableStreamPipeTo(\n      this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal\n    );\n\n    setPromiseIsHandledToTrue(promise);\n\n    return transform.readable;\n  }\n\n  /**\n   * Pipes this readable stream to a given writable stream. The way in which the piping process behaves under\n   * various error conditions can be customized with a number of passed options. It returns a promise that fulfills\n   * when the piping process completes successfully, or rejects if any errors were encountered.\n   *\n   * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n   */\n  pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;\n  pipeTo(destination: WritableStream<R> | null | undefined,\n         rawOptions: StreamPipeOptions | null | undefined = {}): Promise<void> {\n    if (!IsReadableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('pipeTo'));\n    }\n\n    if (destination === undefined) {\n      return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`);\n    }\n    if (!IsWritableStream(destination)) {\n      return promiseRejectedWith(\n        new TypeError(`ReadableStream.prototype.pipeTo's first argument must be a WritableStream`)\n      );\n    }\n\n    let options: ValidatedStreamPipeOptions;\n    try {\n      options = convertPipeOptions(rawOptions, 'Second parameter');\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n\n    if (IsReadableStreamLocked(this)) {\n      return promiseRejectedWith(\n        new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')\n      );\n    }\n    if (IsWritableStreamLocked(destination)) {\n      return promiseRejectedWith(\n        new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')\n      );\n    }\n\n    return ReadableStreamPipeTo<R>(\n      this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal\n    );\n  }\n\n  /**\n   * Tees this readable stream, returning a two-element array containing the two resulting branches as\n   * new {@link ReadableStream} instances.\n   *\n   * Teeing a stream will lock it, preventing any other consumer from acquiring a reader.\n   * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be\n   * propagated to the stream's underlying source.\n   *\n   * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable,\n   * this could allow interference between the two branches.\n   */\n  tee(): [ReadableStream<R>, ReadableStream<R>] {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('tee');\n    }\n\n    const branches = ReadableStreamTee(this, false);\n    return CreateArrayFromList(branches);\n  }\n\n  /**\n   * Asynchronously iterates over the chunks in the stream's internal queue.\n   *\n   * Asynchronously iterating over the stream will lock it, preventing any other consumer from acquiring a reader.\n   * The lock will be released if the async iterator's {@link ReadableStreamAsyncIterator.return | return()} method\n   * is called, e.g. by breaking out of the loop.\n   *\n   * By default, calling the async iterator's {@link ReadableStreamAsyncIterator.return | return()} method will also\n   * cancel the stream. To prevent this, use the stream's {@link ReadableStream.values | values()} method, passing\n   * `true` for the `preventCancel` option.\n   */\n  values(options?: ReadableStreamIteratorOptions): ReadableStreamAsyncIterator<R>;\n  values(rawOptions: ReadableStreamIteratorOptions | null | undefined = undefined): ReadableStreamAsyncIterator<R> {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('values');\n    }\n\n    const options = convertIteratorOptions(rawOptions, 'First parameter');\n    return AcquireReadableStreamAsyncIterator<R>(this, options.preventCancel);\n  }\n\n  /**\n   * {@inheritDoc ReadableStream.values}\n   */\n  [Symbol.asyncIterator](options?: ReadableStreamIteratorOptions): ReadableStreamAsyncIterator<R>;\n\n  [SymbolAsyncIterator](options?: ReadableStreamIteratorOptions): ReadableStreamAsyncIterator<R> {\n    // Stub implementation, overridden below\n    return this.values(options);\n  }\n\n  /**\n   * Creates a new ReadableStream wrapping the provided iterable or async iterable.\n   *\n   * This can be used to adapt various kinds of objects into a readable stream,\n   * such as an array, an async generator, or a Node.js readable stream.\n   */\n  static from<R>(asyncIterable: Iterable<R> | AsyncIterable<R> | ReadableStreamLike<R>): ReadableStream<R> {\n    return ReadableStreamFrom(asyncIterable);\n  }\n}\n\nObject.defineProperties(ReadableStream, {\n  from: { enumerable: true }\n});\nObject.defineProperties(ReadableStream.prototype, {\n  cancel: { enumerable: true },\n  getReader: { enumerable: true },\n  pipeThrough: { enumerable: true },\n  pipeTo: { enumerable: true },\n  tee: { enumerable: true },\n  values: { enumerable: true },\n  locked: { enumerable: true }\n});\nsetFunctionName(ReadableStream.from, 'from');\nsetFunctionName(ReadableStream.prototype.cancel, 'cancel');\nsetFunctionName(ReadableStream.prototype.getReader, 'getReader');\nsetFunctionName(ReadableStream.prototype.pipeThrough, 'pipeThrough');\nsetFunctionName(ReadableStream.prototype.pipeTo, 'pipeTo');\nsetFunctionName(ReadableStream.prototype.tee, 'tee');\nsetFunctionName(ReadableStream.prototype.values, 'values');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStream.prototype, Symbol.toStringTag, {\n    value: 'ReadableStream',\n    configurable: true\n  });\n}\nObject.defineProperty(ReadableStream.prototype, SymbolAsyncIterator, {\n  value: ReadableStream.prototype.values,\n  writable: true,\n  configurable: true\n});\n\nexport type {\n  ReadableStreamAsyncIterator,\n  ReadableStreamDefaultReadResult,\n  ReadableStreamBYOBReadResult,\n  ReadableStreamBYOBReaderReadOptions,\n  UnderlyingByteSource,\n  UnderlyingSource,\n  UnderlyingSourceStartCallback,\n  UnderlyingSourcePullCallback,\n  UnderlyingSourceCancelCallback,\n  UnderlyingByteSourceStartCallback,\n  UnderlyingByteSourcePullCallback,\n  StreamPipeOptions,\n  ReadableWritablePair,\n  ReadableStreamIteratorOptions,\n  ReadableStreamLike,\n  ReadableStreamDefaultReaderLike\n};\n\n// Abstract operations for the ReadableStream.\n\n// Throws if and only if startAlgorithm throws.\nexport function CreateReadableStream<R>(\n  startAlgorithm: () => void | PromiseLike<void>,\n  pullAlgorithm: () => Promise<void>,\n  cancelAlgorithm: (reason: any) => Promise<void>,\n  highWaterMark = 1,\n  sizeAlgorithm: QueuingStrategySizeCallback<R> = () => 1\n): DefaultReadableStream<R> {\n  assert(IsNonNegativeNumber(highWaterMark));\n\n  const stream: DefaultReadableStream<R> = Object.create(ReadableStream.prototype);\n  InitializeReadableStream(stream);\n\n  const controller: ReadableStreamDefaultController<R> = Object.create(ReadableStreamDefaultController.prototype);\n  SetUpReadableStreamDefaultController(\n    stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm\n  );\n\n  return stream;\n}\n\n// Throws if and only if startAlgorithm throws.\nexport function CreateReadableByteStream(\n  startAlgorithm: () => void | PromiseLike<void>,\n  pullAlgorithm: () => Promise<void>,\n  cancelAlgorithm: (reason: any) => Promise<void>\n): ReadableByteStream {\n  const stream: ReadableByteStream = Object.create(ReadableStream.prototype);\n  InitializeReadableStream(stream);\n\n  const controller: ReadableByteStreamController = Object.create(ReadableByteStreamController.prototype);\n  SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, undefined);\n\n  return stream;\n}\n\nfunction InitializeReadableStream(stream: ReadableStream) {\n  stream._state = 'readable';\n  stream._reader = undefined;\n  stream._storedError = undefined;\n  stream._disturbed = false;\n}\n\nexport function IsReadableStream(x: unknown): x is ReadableStream {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n    return false;\n  }\n\n  return x instanceof ReadableStream;\n}\n\nexport function IsReadableStreamDisturbed(stream: ReadableStream): boolean {\n  assert(IsReadableStream(stream));\n\n  return stream._disturbed;\n}\n\nexport function IsReadableStreamLocked(stream: ReadableStream): boolean {\n  assert(IsReadableStream(stream));\n\n  if (stream._reader === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\n// ReadableStream API exposed for controllers.\n\nexport function ReadableStreamCancel<R>(stream: ReadableStream<R>, reason: any): Promise<undefined> {\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    return promiseResolvedWith(undefined);\n  }\n  if (stream._state === 'errored') {\n    return promiseRejectedWith(stream._storedError);\n  }\n\n  ReadableStreamClose(stream);\n\n  const reader = stream._reader;\n  if (reader !== undefined && IsReadableStreamBYOBReader(reader)) {\n    const readIntoRequests = reader._readIntoRequests;\n    reader._readIntoRequests = new SimpleQueue();\n    readIntoRequests.forEach(readIntoRequest => {\n      readIntoRequest._closeSteps(undefined);\n    });\n  }\n\n  const sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n  return transformPromiseWith(sourceCancelPromise, noop);\n}\n\nexport function ReadableStreamClose<R>(stream: ReadableStream<R>): void {\n  assert(stream._state === 'readable');\n\n  stream._state = 'closed';\n\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return;\n  }\n\n  defaultReaderClosedPromiseResolve(reader);\n\n  if (IsReadableStreamDefaultReader<R>(reader)) {\n    const readRequests = reader._readRequests;\n    reader._readRequests = new SimpleQueue();\n    readRequests.forEach(readRequest => {\n      readRequest._closeSteps();\n    });\n  }\n}\n\nexport function ReadableStreamError<R>(stream: ReadableStream<R>, e: any): void {\n  assert(IsReadableStream(stream));\n  assert(stream._state === 'readable');\n\n  stream._state = 'errored';\n  stream._storedError = e;\n\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return;\n  }\n\n  defaultReaderClosedPromiseReject(reader, e);\n\n  if (IsReadableStreamDefaultReader<R>(reader)) {\n    ReadableStreamDefaultReaderErrorReadRequests(reader, e);\n  } else {\n    assert(IsReadableStreamBYOBReader(reader));\n    ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e);\n  }\n}\n\n// Readers\n\nexport type ReadableStreamReader<R> = ReadableStreamDefaultReader<R> | ReadableStreamBYOBReader;\n\nexport {\n  ReadableStreamDefaultReader,\n  ReadableStreamBYOBReader\n};\n\n// Controllers\n\nexport {\n  ReadableStreamDefaultController,\n  ReadableStreamBYOBRequest,\n  ReadableByteStreamController\n};\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name: string): TypeError {\n  return new TypeError(`ReadableStream.prototype.${name} can only be used on a ReadableStream`);\n}\n","import type { QueuingStrategyInit } from '../queuing-strategy';\nimport { assertDictionary, assertRequiredField, convertUnrestrictedDouble } from './basic';\n\nexport function convertQueuingStrategyInit(init: QueuingStrategyInit | null | undefined,\n                                           context: string): QueuingStrategyInit {\n  assertDictionary(init, context);\n  const highWaterMark = init?.highWaterMark;\n  assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit');\n  return {\n    highWaterMark: convertUnrestrictedDouble(highWaterMark)\n  };\n}\n","import type { QueuingStrategy, QueuingStrategyInit } from './queuing-strategy';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { assertRequiredArgument } from './validators/basic';\nimport { convertQueuingStrategyInit } from './validators/queuing-strategy-init';\n\n// The size function must not have a prototype property nor be a constructor\nconst byteLengthSizeFunction = (chunk: ArrayBufferView): number => {\n  return chunk.byteLength;\n};\nsetFunctionName(byteLengthSizeFunction, 'size');\n\n/**\n * A queuing strategy that counts the number of bytes in each chunk.\n *\n * @public\n */\nexport default class ByteLengthQueuingStrategy implements QueuingStrategy<ArrayBufferView> {\n  /** @internal */\n  readonly _byteLengthQueuingStrategyHighWaterMark: number;\n\n  constructor(options: QueuingStrategyInit) {\n    assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy');\n    options = convertQueuingStrategyInit(options, 'First parameter');\n    this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;\n  }\n\n  /**\n   * Returns the high water mark provided to the constructor.\n   */\n  get highWaterMark(): number {\n    if (!IsByteLengthQueuingStrategy(this)) {\n      throw byteLengthBrandCheckException('highWaterMark');\n    }\n    return this._byteLengthQueuingStrategyHighWaterMark;\n  }\n\n  /**\n   * Measures the size of `chunk` by returning the value of its `byteLength` property.\n   */\n  get size(): (chunk: ArrayBufferView) => number {\n    if (!IsByteLengthQueuingStrategy(this)) {\n      throw byteLengthBrandCheckException('size');\n    }\n    return byteLengthSizeFunction;\n  }\n}\n\nObject.defineProperties(ByteLengthQueuingStrategy.prototype, {\n  highWaterMark: { enumerable: true },\n  size: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ByteLengthQueuingStrategy.prototype, Symbol.toStringTag, {\n    value: 'ByteLengthQueuingStrategy',\n    configurable: true\n  });\n}\n\n// Helper functions for the ByteLengthQueuingStrategy.\n\nfunction byteLengthBrandCheckException(name: string): TypeError {\n  return new TypeError(`ByteLengthQueuingStrategy.prototype.${name} can only be used on a ByteLengthQueuingStrategy`);\n}\n\nexport function IsByteLengthQueuingStrategy(x: any): x is ByteLengthQueuingStrategy {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) {\n    return false;\n  }\n\n  return x instanceof ByteLengthQueuingStrategy;\n}\n","import type { QueuingStrategy, QueuingStrategyInit } from './queuing-strategy';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { assertRequiredArgument } from './validators/basic';\nimport { convertQueuingStrategyInit } from './validators/queuing-strategy-init';\n\n// The size function must not have a prototype property nor be a constructor\nconst countSizeFunction = (): 1 => {\n  return 1;\n};\nsetFunctionName(countSizeFunction, 'size');\n\n/**\n * A queuing strategy that counts the number of chunks.\n *\n * @public\n */\nexport default class CountQueuingStrategy implements QueuingStrategy<any> {\n  /** @internal */\n  readonly _countQueuingStrategyHighWaterMark!: number;\n\n  constructor(options: QueuingStrategyInit) {\n    assertRequiredArgument(options, 1, 'CountQueuingStrategy');\n    options = convertQueuingStrategyInit(options, 'First parameter');\n    this._countQueuingStrategyHighWaterMark = options.highWaterMark;\n  }\n\n  /**\n   * Returns the high water mark provided to the constructor.\n   */\n  get highWaterMark(): number {\n    if (!IsCountQueuingStrategy(this)) {\n      throw countBrandCheckException('highWaterMark');\n    }\n    return this._countQueuingStrategyHighWaterMark;\n  }\n\n  /**\n   * Measures the size of `chunk` by always returning 1.\n   * This ensures that the total queue size is a count of the number of chunks in the queue.\n   */\n  get size(): (chunk: any) => 1 {\n    if (!IsCountQueuingStrategy(this)) {\n      throw countBrandCheckException('size');\n    }\n    return countSizeFunction;\n  }\n}\n\nObject.defineProperties(CountQueuingStrategy.prototype, {\n  highWaterMark: { enumerable: true },\n  size: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(CountQueuingStrategy.prototype, Symbol.toStringTag, {\n    value: 'CountQueuingStrategy',\n    configurable: true\n  });\n}\n\n// Helper functions for the CountQueuingStrategy.\n\nfunction countBrandCheckException(name: string): TypeError {\n  return new TypeError(`CountQueuingStrategy.prototype.${name} can only be used on a CountQueuingStrategy`);\n}\n\nexport function IsCountQueuingStrategy(x: any): x is CountQueuingStrategy {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) {\n    return false;\n  }\n\n  return x instanceof CountQueuingStrategy;\n}\n","import { assertDictionary, assertFunction } from './basic';\nimport { promiseCall, reflectCall } from '../helpers/webidl';\nimport type {\n  Transformer,\n  TransformerCancelCallback,\n  TransformerFlushCallback,\n  TransformerStartCallback,\n  TransformerTransformCallback,\n  ValidatedTransformer\n} from '../transform-stream/transformer';\nimport { TransformStreamDefaultController } from '../transform-stream';\n\nexport function convertTransformer<I, O>(original: Transformer<I, O> | null,\n                                         context: string): ValidatedTransformer<I, O> {\n  assertDictionary(original, context);\n  const cancel = original?.cancel;\n  const flush = original?.flush;\n  const readableType = original?.readableType;\n  const start = original?.start;\n  const transform = original?.transform;\n  const writableType = original?.writableType;\n  return {\n    cancel: cancel === undefined ?\n      undefined :\n      convertTransformerCancelCallback(cancel, original!, `${context} has member 'cancel' that`),\n    flush: flush === undefined ?\n      undefined :\n      convertTransformerFlushCallback(flush, original!, `${context} has member 'flush' that`),\n    readableType,\n    start: start === undefined ?\n      undefined :\n      convertTransformerStartCallback(start, original!, `${context} has member 'start' that`),\n    transform: transform === undefined ?\n      undefined :\n      convertTransformerTransformCallback(transform, original!, `${context} has member 'transform' that`),\n    writableType\n  };\n}\n\nfunction convertTransformerFlushCallback<I, O>(\n  fn: TransformerFlushCallback<O>,\n  original: Transformer<I, O>,\n  context: string\n): (controller: TransformStreamDefaultController<O>) => Promise<void> {\n  assertFunction(fn, context);\n  return (controller: TransformStreamDefaultController<O>) => promiseCall(fn, original, [controller]);\n}\n\nfunction convertTransformerStartCallback<I, O>(\n  fn: TransformerStartCallback<O>,\n  original: Transformer<I, O>,\n  context: string\n): TransformerStartCallback<O> {\n  assertFunction(fn, context);\n  return (controller: TransformStreamDefaultController<O>) => reflectCall(fn, original, [controller]);\n}\n\nfunction convertTransformerTransformCallback<I, O>(\n  fn: TransformerTransformCallback<I, O>,\n  original: Transformer<I, O>,\n  context: string\n): (chunk: I, controller: TransformStreamDefaultController<O>) => Promise<void> {\n  assertFunction(fn, context);\n  return (chunk: I, controller: TransformStreamDefaultController<O>) => promiseCall(fn, original, [chunk, controller]);\n}\n\nfunction convertTransformerCancelCallback<I, O>(\n  fn: TransformerCancelCallback,\n  original: Transformer<I, O>,\n  context: string\n): (reason: any) => Promise<void> {\n  assertFunction(fn, context);\n  return (reason: any) => promiseCall(fn, original, [reason]);\n}\n","import assert from '../stub/assert';\nimport {\n  newPromise,\n  promiseRejectedWith,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  transformPromiseWith,\n  uponPromise\n} from './helpers/webidl';\nimport { CreateReadableStream, type DefaultReadableStream, ReadableStream } from './readable-stream';\nimport {\n  ReadableStreamDefaultControllerCanCloseOrEnqueue,\n  ReadableStreamDefaultControllerClose,\n  ReadableStreamDefaultControllerEnqueue,\n  ReadableStreamDefaultControllerError,\n  ReadableStreamDefaultControllerGetDesiredSize,\n  ReadableStreamDefaultControllerHasBackpressure\n} from './readable-stream/default-controller';\nimport type { QueuingStrategy, QueuingStrategySizeCallback } from './queuing-strategy';\nimport { CreateWritableStream, WritableStream, WritableStreamDefaultControllerErrorIfNeeded } from './writable-stream';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { IsNonNegativeNumber } from './abstract-ops/miscellaneous';\nimport { convertQueuingStrategy } from './validators/queuing-strategy';\nimport { ExtractHighWaterMark, ExtractSizeAlgorithm } from './abstract-ops/queuing-strategy';\nimport type {\n  Transformer,\n  TransformerCancelCallback,\n  TransformerFlushCallback,\n  TransformerStartCallback,\n  TransformerTransformCallback,\n  ValidatedTransformer\n} from './transform-stream/transformer';\nimport { convertTransformer } from './validators/transformer';\n\n// Class TransformStream\n\n/**\n * A transform stream consists of a pair of streams: a {@link WritableStream | writable stream},\n * known as its writable side, and a {@link ReadableStream | readable stream}, known as its readable side.\n * In a manner specific to the transform stream in question, writes to the writable side result in new data being\n * made available for reading from the readable side.\n *\n * @public\n */\nexport class TransformStream<I = any, O = any> {\n  /** @internal */\n  _writable!: WritableStream<I>;\n  /** @internal */\n  _readable!: DefaultReadableStream<O>;\n  /** @internal */\n  _backpressure!: boolean;\n  /** @internal */\n  _backpressureChangePromise!: Promise<void>;\n  /** @internal */\n  _backpressureChangePromise_resolve!: () => void;\n  /** @internal */\n  _transformStreamController!: TransformStreamDefaultController<O>;\n\n  constructor(\n    transformer?: Transformer<I, O>,\n    writableStrategy?: QueuingStrategy<I>,\n    readableStrategy?: QueuingStrategy<O>\n  );\n  constructor(rawTransformer: Transformer<I, O> | null | undefined = {},\n              rawWritableStrategy: QueuingStrategy<I> | null | undefined = {},\n              rawReadableStrategy: QueuingStrategy<O> | null | undefined = {}) {\n    if (rawTransformer === undefined) {\n      rawTransformer = null;\n    }\n\n    const writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter');\n    const readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter');\n\n    const transformer = convertTransformer(rawTransformer, 'First parameter');\n    if (transformer.readableType !== undefined) {\n      throw new RangeError('Invalid readableType specified');\n    }\n    if (transformer.writableType !== undefined) {\n      throw new RangeError('Invalid writableType specified');\n    }\n\n    const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);\n    const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);\n    const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);\n    const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);\n\n    let startPromise_resolve!: (value: void | PromiseLike<void>) => void;\n    const startPromise = newPromise<void>(resolve => {\n      startPromise_resolve = resolve;\n    });\n\n    InitializeTransformStream(\n      this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm\n    );\n    SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n\n    if (transformer.start !== undefined) {\n      startPromise_resolve(transformer.start(this._transformStreamController));\n    } else {\n      startPromise_resolve(undefined);\n    }\n  }\n\n  /**\n   * The readable side of the transform stream.\n   */\n  get readable(): ReadableStream<O> {\n    if (!IsTransformStream(this)) {\n      throw streamBrandCheckException('readable');\n    }\n\n    return this._readable;\n  }\n\n  /**\n   * The writable side of the transform stream.\n   */\n  get writable(): WritableStream<I> {\n    if (!IsTransformStream(this)) {\n      throw streamBrandCheckException('writable');\n    }\n\n    return this._writable;\n  }\n}\n\nObject.defineProperties(TransformStream.prototype, {\n  readable: { enumerable: true },\n  writable: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(TransformStream.prototype, Symbol.toStringTag, {\n    value: 'TransformStream',\n    configurable: true\n  });\n}\n\nexport type {\n  Transformer,\n  TransformerCancelCallback,\n  TransformerStartCallback,\n  TransformerFlushCallback,\n  TransformerTransformCallback\n};\n\n// Transform Stream Abstract Operations\n\nexport function CreateTransformStream<I, O>(startAlgorithm: () => void | PromiseLike<void>,\n                                            transformAlgorithm: (chunk: I) => Promise<void>,\n                                            flushAlgorithm: () => Promise<void>,\n                                            cancelAlgorithm: (reason: any) => Promise<void>,\n                                            writableHighWaterMark = 1,\n                                            writableSizeAlgorithm: QueuingStrategySizeCallback<I> = () => 1,\n                                            readableHighWaterMark = 0,\n                                            readableSizeAlgorithm: QueuingStrategySizeCallback<O> = () => 1) {\n  assert(IsNonNegativeNumber(writableHighWaterMark));\n  assert(IsNonNegativeNumber(readableHighWaterMark));\n\n  const stream: TransformStream<I, O> = Object.create(TransformStream.prototype);\n\n  let startPromise_resolve!: (value: void | PromiseLike<void>) => void;\n  const startPromise = newPromise<void>(resolve => {\n    startPromise_resolve = resolve;\n  });\n\n  InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark,\n                            readableSizeAlgorithm);\n\n  const controller: TransformStreamDefaultController<O> = Object.create(TransformStreamDefaultController.prototype);\n\n  SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm);\n\n  const startResult = startAlgorithm();\n  startPromise_resolve(startResult);\n  return stream;\n}\n\nfunction InitializeTransformStream<I, O>(stream: TransformStream<I, O>,\n                                         startPromise: Promise<void>,\n                                         writableHighWaterMark: number,\n                                         writableSizeAlgorithm: QueuingStrategySizeCallback<I>,\n                                         readableHighWaterMark: number,\n                                         readableSizeAlgorithm: QueuingStrategySizeCallback<O>) {\n  function startAlgorithm(): Promise<void> {\n    return startPromise;\n  }\n\n  function writeAlgorithm(chunk: I): Promise<void> {\n    return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n  }\n\n  function abortAlgorithm(reason: any): Promise<void> {\n    return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n  }\n\n  function closeAlgorithm(): Promise<void> {\n    return TransformStreamDefaultSinkCloseAlgorithm(stream);\n  }\n\n  stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm,\n                                          writableHighWaterMark, writableSizeAlgorithm);\n\n  function pullAlgorithm(): Promise<void> {\n    return TransformStreamDefaultSourcePullAlgorithm(stream);\n  }\n\n  function cancelAlgorithm(reason: any): Promise<void> {\n    return TransformStreamDefaultSourceCancelAlgorithm(stream, reason);\n  }\n\n  stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark,\n                                          readableSizeAlgorithm);\n\n  // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure.\n  stream._backpressure = undefined!;\n  stream._backpressureChangePromise = undefined!;\n  stream._backpressureChangePromise_resolve = undefined!;\n  TransformStreamSetBackpressure(stream, true);\n\n  stream._transformStreamController = undefined!;\n}\n\nfunction IsTransformStream(x: unknown): x is TransformStream {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n    return false;\n  }\n\n  return x instanceof TransformStream;\n}\n\n// This is a no-op if both sides are already errored.\nfunction TransformStreamError(stream: TransformStream, e: any) {\n  ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n  TransformStreamErrorWritableAndUnblockWrite(stream, e);\n}\n\nfunction TransformStreamErrorWritableAndUnblockWrite(stream: TransformStream, e: any) {\n  TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n  WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n  TransformStreamUnblockWrite(stream);\n}\n\nfunction TransformStreamUnblockWrite(stream: TransformStream) {\n  if (stream._backpressure) {\n    // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure()\n    // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time\n    // _backpressure is set.\n    TransformStreamSetBackpressure(stream, false);\n  }\n}\n\nfunction TransformStreamSetBackpressure(stream: TransformStream, backpressure: boolean) {\n  // Passes also when called during construction.\n  assert(stream._backpressure !== backpressure);\n\n  if (stream._backpressureChangePromise !== undefined) {\n    stream._backpressureChangePromise_resolve();\n  }\n\n  stream._backpressureChangePromise = newPromise(resolve => {\n    stream._backpressureChangePromise_resolve = resolve;\n  });\n\n  stream._backpressure = backpressure;\n}\n\n// Class TransformStreamDefaultController\n\n/**\n * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}.\n *\n * @public\n */\nexport class TransformStreamDefaultController<O> {\n  /** @internal */\n  _controlledTransformStream: TransformStream<any, O>;\n  /** @internal */\n  _finishPromise: Promise<undefined> | undefined;\n  /** @internal */\n  _finishPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _finishPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _transformAlgorithm: (chunk: any) => Promise<void>;\n  /** @internal */\n  _flushAlgorithm: () => Promise<void>;\n  /** @internal */\n  _cancelAlgorithm: (reason: any) => Promise<void>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full.\n   */\n  get desiredSize(): number | null {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('desiredSize');\n    }\n\n    const readableController = this._controlledTransformStream._readable._readableStreamController;\n    return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n  }\n\n  /**\n   * Enqueues the given chunk `chunk` in the readable side of the controlled transform stream.\n   */\n  enqueue(chunk: O): void;\n  enqueue(chunk: O = undefined!): void {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('enqueue');\n    }\n\n    TransformStreamDefaultControllerEnqueue(this, chunk);\n  }\n\n  /**\n   * Errors both the readable side and the writable side of the controlled transform stream, making all future\n   * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded.\n   */\n  error(reason: any = undefined): void {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('error');\n    }\n\n    TransformStreamDefaultControllerError(this, reason);\n  }\n\n  /**\n   * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the\n   * transformer only needs to consume a portion of the chunks written to the writable side.\n   */\n  terminate(): void {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('terminate');\n    }\n\n    TransformStreamDefaultControllerTerminate(this);\n  }\n}\n\nObject.defineProperties(TransformStreamDefaultController.prototype, {\n  enqueue: { enumerable: true },\n  error: { enumerable: true },\n  terminate: { enumerable: true },\n  desiredSize: { enumerable: true }\n});\nsetFunctionName(TransformStreamDefaultController.prototype.enqueue, 'enqueue');\nsetFunctionName(TransformStreamDefaultController.prototype.error, 'error');\nsetFunctionName(TransformStreamDefaultController.prototype.terminate, 'terminate');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(TransformStreamDefaultController.prototype, Symbol.toStringTag, {\n    value: 'TransformStreamDefaultController',\n    configurable: true\n  });\n}\n\n// Transform Stream Default Controller Abstract Operations\n\nfunction IsTransformStreamDefaultController<O = any>(x: any): x is TransformStreamDefaultController<O> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n    return false;\n  }\n\n  return x instanceof TransformStreamDefaultController;\n}\n\nfunction SetUpTransformStreamDefaultController<I, O>(stream: TransformStream<I, O>,\n                                                     controller: TransformStreamDefaultController<O>,\n                                                     transformAlgorithm: (chunk: I) => Promise<void>,\n                                                     flushAlgorithm: () => Promise<void>,\n                                                     cancelAlgorithm: (reason: any) => Promise<void>) {\n  assert(IsTransformStream(stream));\n  assert(stream._transformStreamController === undefined);\n\n  controller._controlledTransformStream = stream;\n  stream._transformStreamController = controller;\n\n  controller._transformAlgorithm = transformAlgorithm;\n  controller._flushAlgorithm = flushAlgorithm;\n  controller._cancelAlgorithm = cancelAlgorithm;\n\n  controller._finishPromise = undefined;\n  controller._finishPromise_resolve = undefined;\n  controller._finishPromise_reject = undefined;\n}\n\nfunction SetUpTransformStreamDefaultControllerFromTransformer<I, O>(stream: TransformStream<I, O>,\n                                                                    transformer: ValidatedTransformer<I, O>) {\n  const controller: TransformStreamDefaultController<O> = Object.create(TransformStreamDefaultController.prototype);\n\n  let transformAlgorithm: (chunk: I) => Promise<void>;\n  let flushAlgorithm: () => Promise<void>;\n  let cancelAlgorithm: (reason: any) => Promise<void>;\n\n  if (transformer.transform !== undefined) {\n    transformAlgorithm = chunk => transformer.transform!(chunk, controller);\n  } else {\n    transformAlgorithm = chunk => {\n      try {\n        TransformStreamDefaultControllerEnqueue(controller, chunk as unknown as O);\n        return promiseResolvedWith(undefined);\n      } catch (transformResultE) {\n        return promiseRejectedWith(transformResultE);\n      }\n    };\n  }\n\n  if (transformer.flush !== undefined) {\n    flushAlgorithm = () => transformer.flush!(controller);\n  } else {\n    flushAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  if (transformer.cancel !== undefined) {\n    cancelAlgorithm = reason => transformer.cancel!(reason);\n  } else {\n    cancelAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm);\n}\n\nfunction TransformStreamDefaultControllerClearAlgorithms(controller: TransformStreamDefaultController<any>) {\n  controller._transformAlgorithm = undefined!;\n  controller._flushAlgorithm = undefined!;\n  controller._cancelAlgorithm = undefined!;\n}\n\nfunction TransformStreamDefaultControllerEnqueue<O>(controller: TransformStreamDefaultController<O>, chunk: O) {\n  const stream = controller._controlledTransformStream;\n  const readableController = stream._readable._readableStreamController;\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {\n    throw new TypeError('Readable side is not in a state that permits enqueue');\n  }\n\n  // We throttle transform invocations based on the backpressure of the ReadableStream, but we still\n  // accept TransformStreamDefaultControllerEnqueue() calls.\n\n  try {\n    ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n  } catch (e) {\n    // This happens when readableStrategy.size() throws.\n    TransformStreamErrorWritableAndUnblockWrite(stream, e);\n\n    throw stream._readable._storedError;\n  }\n\n  const backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n  if (backpressure !== stream._backpressure) {\n    assert(backpressure);\n    TransformStreamSetBackpressure(stream, true);\n  }\n}\n\nfunction TransformStreamDefaultControllerError(controller: TransformStreamDefaultController<any>, e: any) {\n  TransformStreamError(controller._controlledTransformStream, e);\n}\n\nfunction TransformStreamDefaultControllerPerformTransform<I, O>(controller: TransformStreamDefaultController<O>,\n                                                                chunk: I) {\n  const transformPromise = controller._transformAlgorithm(chunk);\n  return transformPromiseWith(transformPromise, undefined, r => {\n    TransformStreamError(controller._controlledTransformStream, r);\n    throw r;\n  });\n}\n\nfunction TransformStreamDefaultControllerTerminate<O>(controller: TransformStreamDefaultController<O>) {\n  const stream = controller._controlledTransformStream;\n  const readableController = stream._readable._readableStreamController;\n\n  ReadableStreamDefaultControllerClose(readableController);\n\n  const error = new TypeError('TransformStream terminated');\n  TransformStreamErrorWritableAndUnblockWrite(stream, error);\n}\n\n// TransformStreamDefaultSink Algorithms\n\nfunction TransformStreamDefaultSinkWriteAlgorithm<I, O>(stream: TransformStream<I, O>, chunk: I): Promise<void> {\n  assert(stream._writable._state === 'writable');\n\n  const controller = stream._transformStreamController;\n\n  if (stream._backpressure) {\n    const backpressureChangePromise = stream._backpressureChangePromise;\n    assert(backpressureChangePromise !== undefined);\n    return transformPromiseWith(backpressureChangePromise, () => {\n      const writable = stream._writable;\n      const state = writable._state;\n      if (state === 'erroring') {\n        throw writable._storedError;\n      }\n      assert(state === 'writable');\n      return TransformStreamDefaultControllerPerformTransform<I, O>(controller, chunk);\n    });\n  }\n\n  return TransformStreamDefaultControllerPerformTransform<I, O>(controller, chunk);\n}\n\nfunction TransformStreamDefaultSinkAbortAlgorithm<I, O>(stream: TransformStream<I, O>, reason: any): Promise<void> {\n  const controller = stream._transformStreamController;\n  if (controller._finishPromise !== undefined) {\n    return controller._finishPromise;\n  }\n\n  // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n  const readable = stream._readable;\n\n  // Assign the _finishPromise now so that if _cancelAlgorithm calls readable.cancel() internally,\n  // we don't run the _cancelAlgorithm again.\n  controller._finishPromise = newPromise((resolve, reject) => {\n    controller._finishPromise_resolve = resolve;\n    controller._finishPromise_reject = reject;\n  });\n\n  const cancelPromise = controller._cancelAlgorithm(reason);\n  TransformStreamDefaultControllerClearAlgorithms(controller);\n\n  uponPromise(cancelPromise, () => {\n    if (readable._state === 'errored') {\n      defaultControllerFinishPromiseReject(controller, readable._storedError);\n    } else {\n      ReadableStreamDefaultControllerError(readable._readableStreamController, reason);\n      defaultControllerFinishPromiseResolve(controller);\n    }\n    return null;\n  }, r => {\n    ReadableStreamDefaultControllerError(readable._readableStreamController, r);\n    defaultControllerFinishPromiseReject(controller, r);\n    return null;\n  });\n\n  return controller._finishPromise;\n}\n\nfunction TransformStreamDefaultSinkCloseAlgorithm<I, O>(stream: TransformStream<I, O>): Promise<void> {\n  const controller = stream._transformStreamController;\n  if (controller._finishPromise !== undefined) {\n    return controller._finishPromise;\n  }\n\n  // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n  const readable = stream._readable;\n\n  // Assign the _finishPromise now so that if _flushAlgorithm calls readable.cancel() internally,\n  // we don't also run the _cancelAlgorithm.\n  controller._finishPromise = newPromise((resolve, reject) => {\n    controller._finishPromise_resolve = resolve;\n    controller._finishPromise_reject = reject;\n  });\n\n  const flushPromise = controller._flushAlgorithm();\n  TransformStreamDefaultControllerClearAlgorithms(controller);\n\n  uponPromise(flushPromise, () => {\n    if (readable._state === 'errored') {\n      defaultControllerFinishPromiseReject(controller, readable._storedError);\n    } else {\n      ReadableStreamDefaultControllerClose(readable._readableStreamController);\n      defaultControllerFinishPromiseResolve(controller);\n    }\n    return null;\n  }, r => {\n    ReadableStreamDefaultControllerError(readable._readableStreamController, r);\n    defaultControllerFinishPromiseReject(controller, r);\n    return null;\n  });\n\n  return controller._finishPromise;\n}\n\n// TransformStreamDefaultSource Algorithms\n\nfunction TransformStreamDefaultSourcePullAlgorithm(stream: TransformStream): Promise<void> {\n  // Invariant. Enforced by the promises returned by start() and pull().\n  assert(stream._backpressure);\n\n  assert(stream._backpressureChangePromise !== undefined);\n\n  TransformStreamSetBackpressure(stream, false);\n\n  // Prevent the next pull() call until there is backpressure.\n  return stream._backpressureChangePromise;\n}\n\nfunction TransformStreamDefaultSourceCancelAlgorithm<I, O>(stream: TransformStream<I, O>, reason: any): Promise<void> {\n  const controller = stream._transformStreamController;\n  if (controller._finishPromise !== undefined) {\n    return controller._finishPromise;\n  }\n\n  // stream._writable cannot change after construction, so caching it across a call to user code is safe.\n  const writable = stream._writable;\n\n  // Assign the _finishPromise now so that if _flushAlgorithm calls writable.abort() or\n  // writable.cancel() internally, we don't run the _cancelAlgorithm again, or also run the\n  // _flushAlgorithm.\n  controller._finishPromise = newPromise((resolve, reject) => {\n    controller._finishPromise_resolve = resolve;\n    controller._finishPromise_reject = reject;\n  });\n\n  const cancelPromise = controller._cancelAlgorithm(reason);\n  TransformStreamDefaultControllerClearAlgorithms(controller);\n\n  uponPromise(cancelPromise, () => {\n    if (writable._state === 'errored') {\n      defaultControllerFinishPromiseReject(controller, writable._storedError);\n    } else {\n      WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, reason);\n      TransformStreamUnblockWrite(stream);\n      defaultControllerFinishPromiseResolve(controller);\n    }\n    return null;\n  }, r => {\n    WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, r);\n    TransformStreamUnblockWrite(stream);\n    defaultControllerFinishPromiseReject(controller, r);\n    return null;\n  });\n\n  return controller._finishPromise;\n}\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`);\n}\n\nexport function defaultControllerFinishPromiseResolve(controller: TransformStreamDefaultController<any>) {\n  if (controller._finishPromise_resolve === undefined) {\n    return;\n  }\n\n  controller._finishPromise_resolve();\n  controller._finishPromise_resolve = undefined;\n  controller._finishPromise_reject = undefined;\n}\n\nexport function defaultControllerFinishPromiseReject(controller: TransformStreamDefaultController<any>, reason: any) {\n  if (controller._finishPromise_reject === undefined) {\n    return;\n  }\n\n  setPromiseIsHandledToTrue(controller._finishPromise!);\n  controller._finishPromise_reject(reason);\n  controller._finishPromise_resolve = undefined;\n  controller._finishPromise_reject = undefined;\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `TransformStream.prototype.${name} can only be used on a TransformStream`);\n}\n","/* c8 ignore start */\n// 64 KiB (same size chrome slice theirs blob into Uint8array's)\nconst POOL_SIZE = 65536\n\nif (!globalThis.ReadableStream) {\n  // `node:stream/web` got introduced in v16.5.0 as experimental\n  // and it's preferred over the polyfilled version. So we also\n  // suppress the warning that gets emitted by NodeJS for using it.\n  try {\n    const process = require('node:process')\n    const { emitWarning } = process\n    try {\n      process.emitWarning = () => {}\n      Object.assign(globalThis, require('node:stream/web'))\n      process.emitWarning = emitWarning\n    } catch (error) {\n      process.emitWarning = emitWarning\n      throw error\n    }\n  } catch (error) {\n    // fallback to polyfill implementation\n    Object.assign(globalThis, require('web-streams-polyfill/dist/ponyfill.es2018.js'))\n  }\n}\n\ntry {\n  // Don't use node: prefix for this, require+node: is not supported until node v14.14\n  // Only `import()` can use prefix in 12.20 and later\n  const { Blob } = require('buffer')\n  if (Blob && !Blob.prototype.stream) {\n    Blob.prototype.stream = function name (params) {\n      let position = 0\n      const blob = this\n\n      return new ReadableStream({\n        type: 'bytes',\n        async pull (ctrl) {\n          const chunk = blob.slice(position, Math.min(blob.size, position + POOL_SIZE))\n          const buffer = await chunk.arrayBuffer()\n          position += buffer.byteLength\n          ctrl.enqueue(new Uint8Array(buffer))\n\n          if (position === blob.size) {\n            ctrl.close()\n          }\n        }\n      })\n    }\n  }\n} catch (error) {}\n/* c8 ignore end */\n","/*! fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\n// TODO (jimmywarting): in the feature use conditional loading with top level await (requires 14.x)\n// Node has recently added whatwg stream into core\n\nimport './streams.cjs'\n\n// 64 KiB (same size chrome slice theirs blob into Uint8array's)\nconst POOL_SIZE = 65536\n\n/** @param {(Blob | Uint8Array)[]} parts */\nasync function * toIterator (parts, clone = true) {\n  for (const part of parts) {\n    if ('stream' in part) {\n      yield * (/** @type {AsyncIterableIterator<Uint8Array>} */ (part.stream()))\n    } else if (ArrayBuffer.isView(part)) {\n      if (clone) {\n        let position = part.byteOffset\n        const end = part.byteOffset + part.byteLength\n        while (position !== end) {\n          const size = Math.min(end - position, POOL_SIZE)\n          const chunk = part.buffer.slice(position, position + size)\n          position += chunk.byteLength\n          yield new Uint8Array(chunk)\n        }\n      } else {\n        yield part\n      }\n    /* c8 ignore next 10 */\n    } else {\n      // For blobs that have arrayBuffer but no stream method (nodes buffer.Blob)\n      let position = 0, b = (/** @type {Blob} */ (part))\n      while (position !== b.size) {\n        const chunk = b.slice(position, Math.min(b.size, position + POOL_SIZE))\n        const buffer = await chunk.arrayBuffer()\n        position += buffer.byteLength\n        yield new Uint8Array(buffer)\n      }\n    }\n  }\n}\n\nconst _Blob = class Blob {\n  /** @type {Array.<(Blob|Uint8Array)>} */\n  #parts = []\n  #type = ''\n  #size = 0\n  #endings = 'transparent'\n\n  /**\n   * The Blob() constructor returns a new Blob object. The content\n   * of the blob consists of the concatenation of the values given\n   * in the parameter array.\n   *\n   * @param {*} blobParts\n   * @param {{ type?: string, endings?: string }} [options]\n   */\n  constructor (blobParts = [], options = {}) {\n    if (typeof blobParts !== 'object' || blobParts === null) {\n      throw new TypeError('Failed to construct \\'Blob\\': The provided value cannot be converted to a sequence.')\n    }\n\n    if (typeof blobParts[Symbol.iterator] !== 'function') {\n      throw new TypeError('Failed to construct \\'Blob\\': The object must have a callable @@iterator property.')\n    }\n\n    if (typeof options !== 'object' && typeof options !== 'function') {\n      throw new TypeError('Failed to construct \\'Blob\\': parameter 2 cannot convert to dictionary.')\n    }\n\n    if (options === null) options = {}\n\n    const encoder = new TextEncoder()\n    for (const element of blobParts) {\n      let part\n      if (ArrayBuffer.isView(element)) {\n        part = new Uint8Array(element.buffer.slice(element.byteOffset, element.byteOffset + element.byteLength))\n      } else if (element instanceof ArrayBuffer) {\n        part = new Uint8Array(element.slice(0))\n      } else if (element instanceof Blob) {\n        part = element\n      } else {\n        part = encoder.encode(`${element}`)\n      }\n\n      this.#size += ArrayBuffer.isView(part) ? part.byteLength : part.size\n      this.#parts.push(part)\n    }\n\n    this.#endings = `${options.endings === undefined ? 'transparent' : options.endings}`\n    const type = options.type === undefined ? '' : String(options.type)\n    this.#type = /^[\\x20-\\x7E]*$/.test(type) ? type : ''\n  }\n\n  /**\n   * The Blob interface's size property returns the\n   * size of the Blob in bytes.\n   */\n  get size () {\n    return this.#size\n  }\n\n  /**\n   * The type property of a Blob object returns the MIME type of the file.\n   */\n  get type () {\n    return this.#type\n  }\n\n  /**\n   * The text() method in the Blob interface returns a Promise\n   * that resolves with a string containing the contents of\n   * the blob, interpreted as UTF-8.\n   *\n   * @return {Promise<string>}\n   */\n  async text () {\n    // More optimized than using this.arrayBuffer()\n    // that requires twice as much ram\n    const decoder = new TextDecoder()\n    let str = ''\n    for await (const part of toIterator(this.#parts, false)) {\n      str += decoder.decode(part, { stream: true })\n    }\n    // Remaining\n    str += decoder.decode()\n    return str\n  }\n\n  /**\n   * The arrayBuffer() method in the Blob interface returns a\n   * Promise that resolves with the contents of the blob as\n   * binary data contained in an ArrayBuffer.\n   *\n   * @return {Promise<ArrayBuffer>}\n   */\n  async arrayBuffer () {\n    // Easier way... Just a unnecessary overhead\n    // const view = new Uint8Array(this.size);\n    // await this.stream().getReader({mode: 'byob'}).read(view);\n    // return view.buffer;\n\n    const data = new Uint8Array(this.size)\n    let offset = 0\n    for await (const chunk of toIterator(this.#parts, false)) {\n      data.set(chunk, offset)\n      offset += chunk.length\n    }\n\n    return data.buffer\n  }\n\n  stream () {\n    const it = toIterator(this.#parts, true)\n\n    return new globalThis.ReadableStream({\n      // @ts-ignore\n      type: 'bytes',\n      async pull (ctrl) {\n        const chunk = await it.next()\n        chunk.done ? ctrl.close() : ctrl.enqueue(chunk.value)\n      },\n\n      async cancel () {\n        await it.return()\n      }\n    })\n  }\n\n  /**\n   * The Blob interface's slice() method creates and returns a\n   * new Blob object which contains data from a subset of the\n   * blob on which it's called.\n   *\n   * @param {number} [start]\n   * @param {number} [end]\n   * @param {string} [type]\n   */\n  slice (start = 0, end = this.size, type = '') {\n    const { size } = this\n\n    let relativeStart = start < 0 ? Math.max(size + start, 0) : Math.min(start, size)\n    let relativeEnd = end < 0 ? Math.max(size + end, 0) : Math.min(end, size)\n\n    const span = Math.max(relativeEnd - relativeStart, 0)\n    const parts = this.#parts\n    const blobParts = []\n    let added = 0\n\n    for (const part of parts) {\n      // don't add the overflow to new blobParts\n      if (added >= span) {\n        break\n      }\n\n      const size = ArrayBuffer.isView(part) ? part.byteLength : part.size\n      if (relativeStart && size <= relativeStart) {\n        // Skip the beginning and change the relative\n        // start & end position as we skip the unwanted parts\n        relativeStart -= size\n        relativeEnd -= size\n      } else {\n        let chunk\n        if (ArrayBuffer.isView(part)) {\n          chunk = part.subarray(relativeStart, Math.min(size, relativeEnd))\n          added += chunk.byteLength\n        } else {\n          chunk = part.slice(relativeStart, Math.min(size, relativeEnd))\n          added += chunk.size\n        }\n        relativeEnd -= size\n        blobParts.push(chunk)\n        relativeStart = 0 // All next sequential parts should start at 0\n      }\n    }\n\n    const blob = new Blob([], { type: String(type).toLowerCase() })\n    blob.#size = span\n    blob.#parts = blobParts\n\n    return blob\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Blob'\n  }\n\n  static [Symbol.hasInstance] (object) {\n    return (\n      object &&\n      typeof object === 'object' &&\n      typeof object.constructor === 'function' &&\n      (\n        typeof object.stream === 'function' ||\n        typeof object.arrayBuffer === 'function'\n      ) &&\n      /^(Blob|File)$/.test(object[Symbol.toStringTag])\n    )\n  }\n}\n\nObject.defineProperties(_Blob.prototype, {\n  size: { enumerable: true },\n  type: { enumerable: true },\n  slice: { enumerable: true }\n})\n\n/** @type {typeof globalThis.Blob} */\nexport const Blob = _Blob\nexport default Blob\n","import Blob from './index.js'\n\nconst _File = class File extends Blob {\n  #lastModified = 0\n  #name = ''\n\n  /**\n   * @param {*[]} fileBits\n   * @param {string} fileName\n   * @param {{lastModified?: number, type?: string}} options\n   */// @ts-ignore\n  constructor (fileBits, fileName, options = {}) {\n    if (arguments.length < 2) {\n      throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`)\n    }\n    super(fileBits, options)\n\n    if (options === null) options = {}\n\n    // Simulate WebIDL type casting for NaN value in lastModified option.\n    const lastModified = options.lastModified === undefined ? Date.now() : Number(options.lastModified)\n    if (!Number.isNaN(lastModified)) {\n      this.#lastModified = lastModified\n    }\n\n    this.#name = String(fileName)\n  }\n\n  get name () {\n    return this.#name\n  }\n\n  get lastModified () {\n    return this.#lastModified\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'File'\n  }\n\n  static [Symbol.hasInstance] (object) {\n    return !!object && object instanceof Blob &&\n      /^(File)$/.test(object[Symbol.toStringTag])\n  }\n}\n\n/** @type {typeof globalThis.File} */// @ts-ignore\nexport const File = _File\nexport default File\n","/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nimport C from 'fetch-blob'\nimport F from 'fetch-blob/file.js'\n\nvar {toStringTag:t,iterator:i,hasInstance:h}=Symbol,\nr=Math.random,\nm='append,set,get,getAll,delete,keys,values,entries,forEach,constructor'.split(','),\nf=(a,b,c)=>(a+='',/^(Blob|File)$/.test(b && b[t])?[(c=c!==void 0?c+'':b[t]=='File'?b.name:'blob',a),b.name!==c||b[t]=='blob'?new F([b],c,b):b]:[a,b+'']),\ne=(c,f)=>(f?c:c.replace(/\\r?\\n|\\r/g,'\\r\\n')).replace(/\\n/g,'%0A').replace(/\\r/g,'%0D').replace(/\"/g,'%22'),\nx=(n, a, e)=>{if(a.length<e){throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e} arguments required, but only ${a.length} present.`)}}\n\nexport const File = F\n\n/** @type {typeof globalThis.FormData} */\nexport const FormData = class FormData {\n#d=[];\nconstructor(...a){if(a.length)throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`)}\nget [t]() {return 'FormData'}\n[i](){return this.entries()}\nstatic [h](o) {return o&&typeof o==='object'&&o[t]==='FormData'&&!m.some(m=>typeof o[m]!='function')}\nappend(...a){x('append',arguments,2);this.#d.push(f(...a))}\ndelete(a){x('delete',arguments,1);a+='';this.#d=this.#d.filter(([b])=>b!==a)}\nget(a){x('get',arguments,1);a+='';for(var b=this.#d,l=b.length,c=0;c<l;c++)if(b[c][0]===a)return b[c][1];return null}\ngetAll(a,b){x('getAll',arguments,1);b=[];a+='';this.#d.forEach(c=>c[0]===a&&b.push(c[1]));return b}\nhas(a){x('has',arguments,1);a+='';return this.#d.some(b=>b[0]===a)}\nforEach(a,b){x('forEach',arguments,1);for(var [c,d]of this)a.call(b,d,c,this)}\nset(...a){x('set',arguments,2);var b=[],c=!0;a=f(...a);this.#d.forEach(d=>{d[0]===a[0]?c&&(c=!b.push(a)):b.push(d)});c&&b.push(a);this.#d=b}\n*entries(){yield*this.#d}\n*keys(){for(var[a]of this)yield a}\n*values(){for(var[,a]of this)yield a}}\n\n/** @param {FormData} F */\nexport function formDataToBlob (F,B=C){\nvar b=`${r()}${r()}`.replace(/\\./g, '').slice(-28).padStart(32, '-'),c=[],p=`--${b}\\r\\nContent-Disposition: form-data; name=\"`\nF.forEach((v,n)=>typeof v=='string'\n?c.push(p+e(n)+`\"\\r\\n\\r\\n${v.replace(/\\r(?!\\n)|(?<!\\r)\\n/g, '\\r\\n')}\\r\\n`)\n:c.push(p+e(n)+`\"; filename=\"${e(v.name, 1)}\"\\r\\nContent-Type: ${v.type||\"application/octet-stream\"}\\r\\n\\r\\n`, v, '\\r\\n'))\nc.push(`--${b}--`)\nreturn new B(c,{type:\"multipart/form-data; boundary=\"+b})}\n","export class FetchBaseError extends Error {\n\tconstructor(message, type) {\n\t\tsuper(message);\n\t\t// Hide custom error implementation details from end-users\n\t\tError.captureStackTrace(this, this.constructor);\n\n\t\tthis.type = type;\n\t}\n\n\tget name() {\n\t\treturn this.constructor.name;\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n}\n","\nimport {FetchBaseError} from './base.js';\n\n/**\n * @typedef {{ address?: string, code: string, dest?: string, errno: number, info?: object, message: string, path?: string, port?: number, syscall: string}} SystemError\n*/\n\n/**\n * FetchError interface for operational errors\n */\nexport class FetchError extends FetchBaseError {\n\t/**\n\t * @param  {string} message -      Error message for human\n\t * @param  {string} [type] -        Error type for machine\n\t * @param  {SystemError} [systemError] - For Node.js system error\n\t */\n\tconstructor(message, type, systemError) {\n\t\tsuper(message, type);\n\t\t// When err.type is `system`, err.erroredSysCall contains system error and err.code contains system error code\n\t\tif (systemError) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\tthis.code = this.errno = systemError.code;\n\t\t\tthis.erroredSysCall = systemError.syscall;\n\t\t}\n\t}\n}\n","/**\n * Is.js\n *\n * Object type checks.\n */\n\nconst NAME = Symbol.toStringTag;\n\n/**\n * Check if `obj` is a URLSearchParams object\n * ref: https://github.com/node-fetch/node-fetch/issues/296#issuecomment-307598143\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isURLSearchParameters = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.append === 'function' &&\n\t\ttypeof object.delete === 'function' &&\n\t\ttypeof object.get === 'function' &&\n\t\ttypeof object.getAll === 'function' &&\n\t\ttypeof object.has === 'function' &&\n\t\ttypeof object.set === 'function' &&\n\t\ttypeof object.sort === 'function' &&\n\t\tobject[NAME] === 'URLSearchParams'\n\t);\n};\n\n/**\n * Check if `object` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isBlob = object => {\n\treturn (\n\t\tobject &&\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.arrayBuffer === 'function' &&\n\t\ttypeof object.type === 'string' &&\n\t\ttypeof object.stream === 'function' &&\n\t\ttypeof object.constructor === 'function' &&\n\t\t/^(Blob|File)$/.test(object[NAME])\n\t);\n};\n\n/**\n * Check if `obj` is an instance of AbortSignal.\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isAbortSignal = object => {\n\treturn (\n\t\ttypeof object === 'object' && (\n\t\t\tobject[NAME] === 'AbortSignal' ||\n\t\t\tobject[NAME] === 'EventTarget'\n\t\t)\n\t);\n};\n\n/**\n * isDomainOrSubdomain reports whether sub is a subdomain (or exact match) of\n * the parent domain.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isDomainOrSubdomain = (destination, original) => {\n\tconst orig = new URL(original).hostname;\n\tconst dest = new URL(destination).hostname;\n\n\treturn orig === dest || orig.endsWith(`.${dest}`);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isSameProtocol = (destination, original) => {\n\tconst orig = new URL(original).protocol;\n\tconst dest = new URL(destination).protocol;\n\n\treturn orig === dest;\n};\n","/*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nif (!globalThis.DOMException) {\n  try {\n    const { MessageChannel } = require('worker_threads'),\n    port = new MessageChannel().port1,\n    ab = new ArrayBuffer()\n    port.postMessage(ab, [ab, ab])\n  } catch (err) {\n    err.constructor.name === 'DOMException' && (\n      globalThis.DOMException = err.constructor\n    )\n  }\n}\n\nmodule.exports = globalThis.DOMException\n","import { statSync, createReadStream, promises as fs } from 'node:fs'\nimport { basename } from 'node:path'\nimport DOMException from 'node-domexception'\n\nimport File from './file.js'\nimport Blob from './index.js'\n\nconst { stat } = fs\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n */\nconst blobFromSync = (path, type) => fromBlob(statSync(path), path, type)\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n * @returns {Promise<Blob>}\n */\nconst blobFrom = (path, type) => stat(path).then(stat => fromBlob(stat, path, type))\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n * @returns {Promise<File>}\n */\nconst fileFrom = (path, type) => stat(path).then(stat => fromFile(stat, path, type))\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n */\nconst fileFromSync = (path, type) => fromFile(statSync(path), path, type)\n\n// @ts-ignore\nconst fromBlob = (stat, path, type = '') => new Blob([new BlobDataItem({\n  path,\n  size: stat.size,\n  lastModified: stat.mtimeMs,\n  start: 0\n})], { type })\n\n// @ts-ignore\nconst fromFile = (stat, path, type = '') => new File([new BlobDataItem({\n  path,\n  size: stat.size,\n  lastModified: stat.mtimeMs,\n  start: 0\n})], basename(path), { type, lastModified: stat.mtimeMs })\n\n/**\n * This is a blob backed up by a file on the disk\n * with minium requirement. Its wrapped around a Blob as a blobPart\n * so you have no direct access to this.\n *\n * @private\n */\nclass BlobDataItem {\n  #path\n  #start\n\n  constructor (options) {\n    this.#path = options.path\n    this.#start = options.start\n    this.size = options.size\n    this.lastModified = options.lastModified\n  }\n\n  /**\n   * Slicing arguments is first validated and formatted\n   * to not be out of range by Blob.prototype.slice\n   */\n  slice (start, end) {\n    return new BlobDataItem({\n      path: this.#path,\n      lastModified: this.lastModified,\n      size: end - start,\n      start: this.#start + start\n    })\n  }\n\n  async * stream () {\n    const { mtimeMs } = await stat(this.#path)\n    if (mtimeMs > this.lastModified) {\n      throw new DOMException('The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.', 'NotReadableError')\n    }\n    yield * createReadStream(this.#path, {\n      start: this.#start,\n      end: this.#start + this.size - 1\n    })\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Blob'\n  }\n}\n\nexport default blobFromSync\nexport { File, Blob, blobFrom, blobFromSync, fileFrom, fileFromSync }\n","import {File} from 'fetch-blob/from.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\n\nlet s = 0;\nconst S = {\n\tSTART_BOUNDARY: s++,\n\tHEADER_FIELD_START: s++,\n\tHEADER_FIELD: s++,\n\tHEADER_VALUE_START: s++,\n\tHEADER_VALUE: s++,\n\tHEADER_VALUE_ALMOST_DONE: s++,\n\tHEADERS_ALMOST_DONE: s++,\n\tPART_DATA_START: s++,\n\tPART_DATA: s++,\n\tEND: s++\n};\n\nlet f = 1;\nconst F = {\n\tPART_BOUNDARY: f,\n\tLAST_BOUNDARY: f *= 2\n};\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nconst lower = c => c | 0x20;\n\nconst noop = () => {};\n\nclass MultipartParser {\n\t/**\n\t * @param {string} boundary\n\t */\n\tconstructor(boundary) {\n\t\tthis.index = 0;\n\t\tthis.flags = 0;\n\n\t\tthis.onHeaderEnd = noop;\n\t\tthis.onHeaderField = noop;\n\t\tthis.onHeadersEnd = noop;\n\t\tthis.onHeaderValue = noop;\n\t\tthis.onPartBegin = noop;\n\t\tthis.onPartData = noop;\n\t\tthis.onPartEnd = noop;\n\n\t\tthis.boundaryChars = {};\n\n\t\tboundary = '\\r\\n--' + boundary;\n\t\tconst ui8a = new Uint8Array(boundary.length);\n\t\tfor (let i = 0; i < boundary.length; i++) {\n\t\t\tui8a[i] = boundary.charCodeAt(i);\n\t\t\tthis.boundaryChars[ui8a[i]] = true;\n\t\t}\n\n\t\tthis.boundary = ui8a;\n\t\tthis.lookbehind = new Uint8Array(this.boundary.length + 8);\n\t\tthis.state = S.START_BOUNDARY;\n\t}\n\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\twrite(data) {\n\t\tlet i = 0;\n\t\tconst length_ = data.length;\n\t\tlet previousIndex = this.index;\n\t\tlet {lookbehind, boundary, boundaryChars, index, state, flags} = this;\n\t\tconst boundaryLength = this.boundary.length;\n\t\tconst boundaryEnd = boundaryLength - 1;\n\t\tconst bufferLength = data.length;\n\t\tlet c;\n\t\tlet cl;\n\n\t\tconst mark = name => {\n\t\t\tthis[name + 'Mark'] = i;\n\t\t};\n\n\t\tconst clear = name => {\n\t\t\tdelete this[name + 'Mark'];\n\t\t};\n\n\t\tconst callback = (callbackSymbol, start, end, ui8a) => {\n\t\t\tif (start === undefined || start !== end) {\n\t\t\t\tthis[callbackSymbol](ui8a && ui8a.subarray(start, end));\n\t\t\t}\n\t\t};\n\n\t\tconst dataCallback = (name, clear) => {\n\t\t\tconst markSymbol = name + 'Mark';\n\t\t\tif (!(markSymbol in this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clear) {\n\t\t\t\tcallback(name, this[markSymbol], i, data);\n\t\t\t\tdelete this[markSymbol];\n\t\t\t} else {\n\t\t\t\tcallback(name, this[markSymbol], data.length, data);\n\t\t\t\tthis[markSymbol] = 0;\n\t\t\t}\n\t\t};\n\n\t\tfor (i = 0; i < length_; i++) {\n\t\t\tc = data[i];\n\n\t\t\tswitch (state) {\n\t\t\t\tcase S.START_BOUNDARY:\n\t\t\t\t\tif (index === boundary.length - 2) {\n\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else if (c !== CR) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (index - 1 === boundary.length - 2) {\n\t\t\t\t\t\tif (flags & F.LAST_BOUNDARY && c === HYPHEN) {\n\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c !== boundary[index + 2]) {\n\t\t\t\t\t\tindex = -2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === boundary[index + 2]) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_FIELD_START:\n\t\t\t\t\tstate = S.HEADER_FIELD;\n\t\t\t\t\tmark('onHeaderField');\n\t\t\t\t\tindex = 0;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_FIELD:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tclear('onHeaderField');\n\t\t\t\t\t\tstate = S.HEADERS_ALMOST_DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tindex++;\n\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === COLON) {\n\t\t\t\t\t\tif (index === 1) {\n\t\t\t\t\t\t\t// empty header field\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataCallback('onHeaderField', true);\n\t\t\t\t\t\tstate = S.HEADER_VALUE_START;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcl = lower(c);\n\t\t\t\t\tif (cl < A || cl > Z) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_START:\n\t\t\t\t\tif (c === SPACE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tmark('onHeaderValue');\n\t\t\t\t\tstate = S.HEADER_VALUE;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_VALUE:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tdataCallback('onHeaderValue', true);\n\t\t\t\t\t\tcallback('onHeaderEnd');\n\t\t\t\t\t\tstate = S.HEADER_VALUE_ALMOST_DONE;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADERS_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback('onHeadersEnd');\n\t\t\t\t\tstate = S.PART_DATA_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.PART_DATA_START:\n\t\t\t\t\tstate = S.PART_DATA;\n\t\t\t\t\tmark('onPartData');\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.PART_DATA:\n\t\t\t\t\tpreviousIndex = index;\n\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// boyer-moore derrived algorithm to safely skip non-boundary data\n\t\t\t\t\t\ti += boundaryEnd;\n\t\t\t\t\t\twhile (i < bufferLength && !(data[i] in boundaryChars)) {\n\t\t\t\t\t\t\ti += boundaryLength;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti -= boundaryEnd;\n\t\t\t\t\t\tc = data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < boundary.length) {\n\t\t\t\t\t\tif (boundary[index] === c) {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tdataCallback('onPartData', true);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index === boundary.length) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\t\t// CR = part boundary\n\t\t\t\t\t\t\tflags |= F.PART_BOUNDARY;\n\t\t\t\t\t\t} else if (c === HYPHEN) {\n\t\t\t\t\t\t\t// HYPHEN = end boundary\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index - 1 === boundary.length) {\n\t\t\t\t\t\tif (flags & F.PART_BOUNDARY) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tif (c === LF) {\n\t\t\t\t\t\t\t\t// unset the PART_BOUNDARY flag\n\t\t\t\t\t\t\t\tflags &= ~F.PART_BOUNDARY;\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (flags & F.LAST_BOUNDARY) {\n\t\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t// when matching a possible boundary, keep a lookbehind reference\n\t\t\t\t\t\t// in case it turns out to be a false lead\n\t\t\t\t\t\tlookbehind[index - 1] = c;\n\t\t\t\t\t} else if (previousIndex > 0) {\n\t\t\t\t\t\t// if our boundary turned out to be rubbish, the captured lookbehind\n\t\t\t\t\t\t// belongs to partData\n\t\t\t\t\t\tconst _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);\n\t\t\t\t\t\tcallback('onPartData', 0, previousIndex, _lookbehind);\n\t\t\t\t\t\tpreviousIndex = 0;\n\t\t\t\t\t\tmark('onPartData');\n\n\t\t\t\t\t\t// reconsider the current character even so it interrupted the sequence\n\t\t\t\t\t\t// it could be the beginning of a new sequence\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.END:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected state entered: ${state}`);\n\t\t\t}\n\t\t}\n\n\t\tdataCallback('onHeaderField');\n\t\tdataCallback('onHeaderValue');\n\t\tdataCallback('onPartData');\n\n\t\t// Update properties for the next call\n\t\tthis.index = index;\n\t\tthis.state = state;\n\t\tthis.flags = flags;\n\t}\n\n\tend() {\n\t\tif ((this.state === S.HEADER_FIELD_START && this.index === 0) ||\n\t\t\t(this.state === S.PART_DATA && this.index === this.boundary.length)) {\n\t\t\tthis.onPartEnd();\n\t\t} else if (this.state !== S.END) {\n\t\t\tthrow new Error('MultipartParser.end(): stream ended unexpectedly');\n\t\t}\n\t}\n}\n\nfunction _fileName(headerValue) {\n\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\tconst m = headerValue.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);\n\tif (!m) {\n\t\treturn;\n\t}\n\n\tconst match = m[2] || m[3] || '';\n\tlet filename = match.slice(match.lastIndexOf('\\\\') + 1);\n\tfilename = filename.replace(/%22/g, '\"');\n\tfilename = filename.replace(/&#(\\d{4});/g, (m, code) => {\n\t\treturn String.fromCharCode(code);\n\t});\n\treturn filename;\n}\n\nexport async function toFormData(Body, ct) {\n\tif (!/multipart/i.test(ct)) {\n\t\tthrow new TypeError('Failed to fetch');\n\t}\n\n\tconst m = ct.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n\n\tif (!m) {\n\t\tthrow new TypeError('no or bad content-type header, no multipart boundary');\n\t}\n\n\tconst parser = new MultipartParser(m[1] || m[2]);\n\n\tlet headerField;\n\tlet headerValue;\n\tlet entryValue;\n\tlet entryName;\n\tlet contentType;\n\tlet filename;\n\tconst entryChunks = [];\n\tconst formData = new FormData();\n\n\tconst onPartData = ui8a => {\n\t\tentryValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tconst appendToFile = ui8a => {\n\t\tentryChunks.push(ui8a);\n\t};\n\n\tconst appendFileToFormData = () => {\n\t\tconst file = new File(entryChunks, filename, {type: contentType});\n\t\tformData.append(entryName, file);\n\t};\n\n\tconst appendEntryToFormData = () => {\n\t\tformData.append(entryName, entryValue);\n\t};\n\n\tconst decoder = new TextDecoder('utf-8');\n\tdecoder.decode();\n\n\tparser.onPartBegin = function () {\n\t\tparser.onPartData = onPartData;\n\t\tparser.onPartEnd = appendEntryToFormData;\n\n\t\theaderField = '';\n\t\theaderValue = '';\n\t\tentryValue = '';\n\t\tentryName = '';\n\t\tcontentType = '';\n\t\tfilename = null;\n\t\tentryChunks.length = 0;\n\t};\n\n\tparser.onHeaderField = function (ui8a) {\n\t\theaderField += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderValue = function (ui8a) {\n\t\theaderValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderEnd = function () {\n\t\theaderValue += decoder.decode();\n\t\theaderField = headerField.toLowerCase();\n\n\t\tif (headerField === 'content-disposition') {\n\t\t\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\t\t\tconst m = headerValue.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);\n\n\t\t\tif (m) {\n\t\t\t\tentryName = m[2] || m[3] || '';\n\t\t\t}\n\n\t\t\tfilename = _fileName(headerValue);\n\n\t\t\tif (filename) {\n\t\t\t\tparser.onPartData = appendToFile;\n\t\t\t\tparser.onPartEnd = appendFileToFormData;\n\t\t\t}\n\t\t} else if (headerField === 'content-type') {\n\t\t\tcontentType = headerValue;\n\t\t}\n\n\t\theaderValue = '';\n\t\theaderField = '';\n\t};\n\n\tfor await (const chunk of Body) {\n\t\tparser.write(chunk);\n\t}\n\n\tparser.end();\n\n\treturn formData;\n}\n","\n/**\n * Body.js\n *\n * Body interface provides common methods for Request and Response\n */\n\nimport Stream, {PassThrough} from 'node:stream';\nimport {types, deprecate, promisify} from 'node:util';\nimport {Buffer} from 'node:buffer';\n\nimport Blob from 'fetch-blob';\nimport {FormData, formDataToBlob} from 'formdata-polyfill/esm.min.js';\n\nimport {FetchError} from './errors/fetch-error.js';\nimport {FetchBaseError} from './errors/base.js';\nimport {isBlob, isURLSearchParameters} from './utils/is.js';\n\nconst pipeline = promisify(Stream.pipeline);\nconst INTERNALS = Symbol('Body internals');\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nexport default class Body {\n\tconstructor(body, {\n\t\tsize = 0\n\t} = {}) {\n\t\tlet boundary = null;\n\n\t\tif (body === null) {\n\t\t\t// Body is undefined or null\n\t\t\tbody = null;\n\t\t} else if (isURLSearchParameters(body)) {\n\t\t\t// Body is a URLSearchParams\n\t\t\tbody = Buffer.from(body.toString());\n\t\t} else if (isBlob(body)) {\n\t\t\t// Body is blob\n\t\t} else if (Buffer.isBuffer(body)) {\n\t\t\t// Body is Buffer\n\t\t} else if (types.isAnyArrayBuffer(body)) {\n\t\t\t// Body is ArrayBuffer\n\t\t\tbody = Buffer.from(body);\n\t\t} else if (ArrayBuffer.isView(body)) {\n\t\t\t// Body is ArrayBufferView\n\t\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t\t} else if (body instanceof Stream) {\n\t\t\t// Body is stream\n\t\t} else if (body instanceof FormData) {\n\t\t\t// Body is FormData\n\t\t\tbody = formDataToBlob(body);\n\t\t\tboundary = body.type.split('=')[1];\n\t\t} else {\n\t\t\t// None of the above\n\t\t\t// coerce to string then buffer\n\t\t\tbody = Buffer.from(String(body));\n\t\t}\n\n\t\tlet stream = body;\n\n\t\tif (Buffer.isBuffer(body)) {\n\t\t\tstream = Stream.Readable.from(body);\n\t\t} else if (isBlob(body)) {\n\t\t\tstream = Stream.Readable.from(body.stream());\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tbody,\n\t\t\tstream,\n\t\t\tboundary,\n\t\t\tdisturbed: false,\n\t\t\terror: null\n\t\t};\n\t\tthis.size = size;\n\n\t\tif (body instanceof Stream) {\n\t\t\tbody.on('error', error_ => {\n\t\t\t\tconst error = error_ instanceof FetchBaseError ?\n\t\t\t\t\terror_ :\n\t\t\t\t\tnew FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`, 'system', error_);\n\t\t\t\tthis[INTERNALS].error = error;\n\t\t\t});\n\t\t}\n\t}\n\n\tget body() {\n\t\treturn this[INTERNALS].stream;\n\t}\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t}\n\n\t/**\n\t * Decode response as ArrayBuffer\n\t *\n\t * @return  Promise\n\t */\n\tasync arrayBuffer() {\n\t\tconst {buffer, byteOffset, byteLength} = await consumeBody(this);\n\t\treturn buffer.slice(byteOffset, byteOffset + byteLength);\n\t}\n\n\tasync formData() {\n\t\tconst ct = this.headers.get('content-type');\n\n\t\tif (ct.startsWith('application/x-www-form-urlencoded')) {\n\t\t\tconst formData = new FormData();\n\t\t\tconst parameters = new URLSearchParams(await this.text());\n\n\t\t\tfor (const [name, value] of parameters) {\n\t\t\t\tformData.append(name, value);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\tconst {toFormData} = await import('./utils/multipart-parser.js');\n\t\treturn toFormData(this.body, ct);\n\t}\n\n\t/**\n\t * Return raw response as Blob\n\t *\n\t * @return Promise\n\t */\n\tasync blob() {\n\t\tconst ct = (this.headers && this.headers.get('content-type')) || (this[INTERNALS].body && this[INTERNALS].body.type) || '';\n\t\tconst buf = await this.arrayBuffer();\n\n\t\treturn new Blob([buf], {\n\t\t\ttype: ct\n\t\t});\n\t}\n\n\t/**\n\t * Decode response as json\n\t *\n\t * @return  Promise\n\t */\n\tasync json() {\n\t\tconst text = await this.text();\n\t\treturn JSON.parse(text);\n\t}\n\n\t/**\n\t * Decode response as text\n\t *\n\t * @return  Promise\n\t */\n\tasync text() {\n\t\tconst buffer = await consumeBody(this);\n\t\treturn new TextDecoder().decode(buffer);\n\t}\n\n\t/**\n\t * Decode response as buffer (non-spec api)\n\t *\n\t * @return  Promise\n\t */\n\tbuffer() {\n\t\treturn consumeBody(this);\n\t}\n}\n\nBody.prototype.buffer = deprecate(Body.prototype.buffer, 'Please use \\'response.arrayBuffer()\\' instead of \\'response.buffer()\\'', 'node-fetch#buffer');\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: {enumerable: true},\n\tbodyUsed: {enumerable: true},\n\tarrayBuffer: {enumerable: true},\n\tblob: {enumerable: true},\n\tjson: {enumerable: true},\n\ttext: {enumerable: true},\n\tdata: {get: deprecate(() => {},\n\t\t'data doesn\\'t exist, use json(), text(), arrayBuffer(), or body instead',\n\t\t'https://github.com/node-fetch/node-fetch/issues/1000 (response)')}\n});\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nasync function consumeBody(data) {\n\tif (data[INTERNALS].disturbed) {\n\t\tthrow new TypeError(`body used already for: ${data.url}`);\n\t}\n\n\tdata[INTERNALS].disturbed = true;\n\n\tif (data[INTERNALS].error) {\n\t\tthrow data[INTERNALS].error;\n\t}\n\n\tconst {body} = data;\n\n\t// Body is null\n\tif (body === null) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t/* c8 ignore next 3 */\n\tif (!(body instanceof Stream)) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t// Body is stream\n\t// get ready to actually consume the body\n\tconst accum = [];\n\tlet accumBytes = 0;\n\n\ttry {\n\t\tfor await (const chunk of body) {\n\t\t\tif (data.size > 0 && accumBytes + chunk.length > data.size) {\n\t\t\t\tconst error = new FetchError(`content size at ${data.url} over limit: ${data.size}`, 'max-size');\n\t\t\t\tbody.destroy(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t}\n\t} catch (error) {\n\t\tconst error_ = error instanceof FetchBaseError ? error : new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`, 'system', error);\n\t\tthrow error_;\n\t}\n\n\tif (body.readableEnded === true || body._readableState.ended === true) {\n\t\ttry {\n\t\t\tif (accum.every(c => typeof c === 'string')) {\n\t\t\t\treturn Buffer.from(accum.join(''));\n\t\t\t}\n\n\t\t\treturn Buffer.concat(accum, accumBytes);\n\t\t} catch (error) {\n\t\t\tthrow new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`, 'system', error);\n\t\t}\n\t} else {\n\t\tthrow new FetchError(`Premature close of server response while trying to fetch ${data.url}`);\n\t}\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param   Mixed   instance       Response or Request instance\n * @param   String  highWaterMark  highWaterMark for both PassThrough body streams\n * @return  Mixed\n */\nexport const clone = (instance, highWaterMark) => {\n\tlet p1;\n\tlet p2;\n\tlet {body} = instance[INTERNALS];\n\n\t// Don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// Check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif ((body instanceof Stream) && (typeof body.getBoundary !== 'function')) {\n\t\t// Tee instance body\n\t\tp1 = new PassThrough({highWaterMark});\n\t\tp2 = new PassThrough({highWaterMark});\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// Set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].stream = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n};\n\nconst getNonSpecFormDataBoundary = deprecate(\n\tbody => body.getBoundary(),\n\t'form-data doesn\\'t follow the spec and requires special treatment. Use alternative package',\n\t'https://github.com/node-fetch/node-fetch/issues/1167'\n);\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param {any} body Any options.body input\n * @returns {string | null}\n */\nexport const extractContentType = (body, request) => {\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn null;\n\t}\n\n\t// Body is string\n\tif (typeof body === 'string') {\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n\n\t// Body is a URLSearchParams\n\tif (isURLSearchParameters(body)) {\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t}\n\n\t// Body is blob\n\tif (isBlob(body)) {\n\t\treturn body.type || null;\n\t}\n\n\t// Body is a Buffer (Buffer, ArrayBuffer or ArrayBufferView)\n\tif (Buffer.isBuffer(body) || types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) {\n\t\treturn null;\n\t}\n\n\tif (body instanceof FormData) {\n\t\treturn `multipart/form-data; boundary=${request[INTERNALS].boundary}`;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getBoundary === 'function') {\n\t\treturn `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`;\n\t}\n\n\t// Body is stream - can't really do much about this\n\tif (body instanceof Stream) {\n\t\treturn null;\n\t}\n\n\t// Body constructor defaults other things to string\n\treturn 'text/plain;charset=UTF-8';\n};\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param {any} obj.body Body object from the Body instance.\n * @returns {number | null}\n */\nexport const getTotalBytes = request => {\n\tconst {body} = request[INTERNALS];\n\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn 0;\n\t}\n\n\t// Body is Blob\n\tif (isBlob(body)) {\n\t\treturn body.size;\n\t}\n\n\t// Body is Buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn body.length;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getLengthSync === 'function') {\n\t\treturn body.hasKnownLength && body.hasKnownLength() ? body.getLengthSync() : null;\n\t}\n\n\t// Body is stream\n\treturn null;\n};\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param {Stream.Writable} dest The stream to write to.\n * @param obj.body Body object from the Body instance.\n * @returns {Promise<void>}\n */\nexport const writeToStream = async (dest, {body}) => {\n\tif (body === null) {\n\t\t// Body is null\n\t\tdest.end();\n\t} else {\n\t\t// Body is stream\n\t\tawait pipeline(body, dest);\n\t}\n};\n","/**\n * Headers.js\n *\n * Headers class offers convenient helpers\n */\n\nimport {types} from 'node:util';\nimport http from 'node:http';\n\n/* c8 ignore next 9 */\nconst validateHeaderName = typeof http.validateHeaderName === 'function' ?\n\thttp.validateHeaderName :\n\tname => {\n\t\tif (!/^[\\^`\\-\\w!#$%&'*+.|~]+$/.test(name)) {\n\t\t\tconst error = new TypeError(`Header name must be a valid HTTP token [${name}]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_HTTP_TOKEN'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/* c8 ignore next 9 */\nconst validateHeaderValue = typeof http.validateHeaderValue === 'function' ?\n\thttp.validateHeaderValue :\n\t(name, value) => {\n\t\tif (/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/.test(value)) {\n\t\t\tconst error = new TypeError(`Invalid character in header content [\"${name}\"]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_CHAR'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/**\n * @typedef {Headers | Record<string, string> | Iterable<readonly [string, string]> | Iterable<Iterable<string>>} HeadersInit\n */\n\n/**\n * This Fetch API interface allows you to perform various actions on HTTP request and response headers.\n * These actions include retrieving, setting, adding to, and removing.\n * A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.\n * You can add to this using methods like append() (see Examples.)\n * In all methods of this interface, header names are matched by case-insensitive byte sequence.\n *\n */\nexport default class Headers extends URLSearchParams {\n\t/**\n\t * Headers class\n\t *\n\t * @constructor\n\t * @param {HeadersInit} [init] - Response headers\n\t */\n\tconstructor(init) {\n\t\t// Validate and normalize init object in [name, value(s)][]\n\t\t/** @type {string[][]} */\n\t\tlet result = [];\n\t\tif (init instanceof Headers) {\n\t\t\tconst raw = init.raw();\n\t\t\tfor (const [name, values] of Object.entries(raw)) {\n\t\t\t\tresult.push(...values.map(value => [name, value]));\n\t\t\t}\n\t\t} else if (init == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\t\t// No op\n\t\t} else if (typeof init === 'object' && !types.isBoxedPrimitive(init)) {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\t\tif (method == null) {\n\t\t\t\t// Record<ByteString, ByteString>\n\t\t\t\tresult.push(...Object.entries(init));\n\t\t\t} else {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// Sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tresult = [...init]\n\t\t\t\t\t.map(pair => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof pair !== 'object' || types.isBoxedPrimitive(pair)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be an iterable object');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t}).map(pair => {\n\t\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Failed to construct \\'Headers\\': The provided value is not of type \\'(sequence<sequence<ByteString>> or record<ByteString, ByteString>)');\n\t\t}\n\n\t\t// Validate and lowercase\n\t\tresult =\n\t\t\tresult.length > 0 ?\n\t\t\t\tresult.map(([name, value]) => {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn [String(name).toLowerCase(), String(value)];\n\t\t\t\t}) :\n\t\t\t\tundefined;\n\n\t\tsuper(result);\n\n\t\t// Returning a Proxy that will lowercase key names, validate parameters and sort keys\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn new Proxy(this, {\n\t\t\tget(target, p, receiver) {\n\t\t\t\tswitch (p) {\n\t\t\t\t\tcase 'append':\n\t\t\t\t\tcase 'set':\n\t\t\t\t\t\treturn (name, value) => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase(),\n\t\t\t\t\t\t\t\tString(value)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\tcase 'has':\n\t\t\t\t\tcase 'getAll':\n\t\t\t\t\t\treturn name => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'keys':\n\t\t\t\t\t\treturn () => {\n\t\t\t\t\t\t\ttarget.sort();\n\t\t\t\t\t\t\treturn new Set(URLSearchParams.prototype.keys.call(target)).keys();\n\t\t\t\t\t\t};\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn Reflect.get(target, p, receiver);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t/* c8 ignore next */\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n\n\ttoString() {\n\t\treturn Object.prototype.toString.call(this);\n\t}\n\n\tget(name) {\n\t\tconst values = this.getAll(name);\n\t\tif (values.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet value = values.join(', ');\n\t\tif (/^content-encoding$/i.test(name)) {\n\t\t\tvalue = value.toLowerCase();\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tforEach(callback, thisArg = undefined) {\n\t\tfor (const name of this.keys()) {\n\t\t\tReflect.apply(callback, thisArg, [this.get(name), name, this]);\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield this.get(name);\n\t\t}\n\t}\n\n\t/**\n\t * @type {() => IterableIterator<[string, string]>}\n\t */\n\t* entries() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield [name, this.get(name)];\n\t\t}\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.entries();\n\t}\n\n\t/**\n\t * Node-fetch non-spec method\n\t * returning all headers and their values as array\n\t * @returns {Record<string, string[]>}\n\t */\n\traw() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tresult[key] = this.getAll(key);\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\t/**\n\t * For better console.log(headers) and also to convert Headers into Node.js Request compatible format\n\t */\n\t[Symbol.for('nodejs.util.inspect.custom')]() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tconst values = this.getAll(key);\n\t\t\t// Http.request() only supports string as Host header.\n\t\t\t// This hack makes specifying custom Host header possible.\n\t\t\tif (key === 'host') {\n\t\t\t\tresult[key] = values[0];\n\t\t\t} else {\n\t\t\t\tresult[key] = values.length > 1 ? values : values[0];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n}\n\n/**\n * Re-shaping object for Web IDL tests\n * Only need to do it for overridden methods\n */\nObject.defineProperties(\n\tHeaders.prototype,\n\t['get', 'entries', 'forEach', 'values'].reduce((result, property) => {\n\t\tresult[property] = {enumerable: true};\n\t\treturn result;\n\t}, {})\n);\n\n/**\n * Create a Headers object from an http.IncomingMessage.rawHeaders, ignoring those that do\n * not conform to HTTP grammar productions.\n * @param {import('http').IncomingMessage['rawHeaders']} headers\n */\nexport function fromRawHeaders(headers = []) {\n\treturn new Headers(\n\t\theaders\n\t\t\t// Split into pairs\n\t\t\t.reduce((result, value, index, array) => {\n\t\t\t\tif (index % 2 === 0) {\n\t\t\t\t\tresult.push(array.slice(index, index + 2));\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t\t.filter(([name, value]) => {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t})\n\n\t);\n}\n","const redirectStatus = new Set([301, 302, 303, 307, 308]);\n\n/**\n * Redirect code matching\n *\n * @param {number} code - Status code\n * @return {boolean}\n */\nexport const isRedirect = code => {\n\treturn redirectStatus.has(code);\n};\n","/**\n * Response.js\n *\n * Response class provides content decoding\n */\n\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType} from './body.js';\nimport {isRedirect} from './utils/is-redirect.js';\n\nconst INTERNALS = Symbol('Response internals');\n\n/**\n * Response class\n *\n * Ref: https://fetch.spec.whatwg.org/#response-class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nexport default class Response extends Body {\n\tconstructor(body = null, options = {}) {\n\t\tsuper(body, options);\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq, no-negated-condition\n\t\tconst status = options.status != null ? options.status : 200;\n\n\t\tconst headers = new Headers(options.headers);\n\n\t\tif (body !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\ttype: 'default',\n\t\t\turl: options.url,\n\t\t\tstatus,\n\t\t\tstatusText: options.statusText || '',\n\t\t\theaders,\n\t\t\tcounter: options.counter,\n\t\t\thighWaterMark: options.highWaterMark\n\t\t};\n\t}\n\n\tget type() {\n\t\treturn this[INTERNALS].type;\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS].status;\n\t}\n\n\t/**\n\t * Convenience property representing if the request ended normally\n\t */\n\tget ok() {\n\t\treturn this[INTERNALS].status >= 200 && this[INTERNALS].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget highWaterMark() {\n\t\treturn this[INTERNALS].highWaterMark;\n\t}\n\n\t/**\n\t * Clone this response\n\t *\n\t * @return  Response\n\t */\n\tclone() {\n\t\treturn new Response(clone(this, this.highWaterMark), {\n\t\t\ttype: this.type,\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected,\n\t\t\tsize: this.size,\n\t\t\thighWaterMark: this.highWaterMark\n\t\t});\n\t}\n\n\t/**\n\t * @param {string} url    The URL that the new response is to originate from.\n\t * @param {number} status An optional status code for the response (e.g., 302.)\n\t * @returns {Response}    A Response object.\n\t */\n\tstatic redirect(url, status = 302) {\n\t\tif (!isRedirect(status)) {\n\t\t\tthrow new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n\t\t}\n\n\t\treturn new Response(null, {\n\t\t\theaders: {\n\t\t\t\tlocation: new URL(url).toString()\n\t\t\t},\n\t\t\tstatus\n\t\t});\n\t}\n\n\tstatic error() {\n\t\tconst response = new Response(null, {status: 0, statusText: ''});\n\t\tresponse[INTERNALS].type = 'error';\n\t\treturn response;\n\t}\n\n\tstatic json(data = undefined, init = {}) {\n\t\tconst body = JSON.stringify(data);\n\n\t\tif (body === undefined) {\n\t\t\tthrow new TypeError('data is not JSON serializable');\n\t\t}\n\n\t\tconst headers = new Headers(init && init.headers);\n\n\t\tif (!headers.has('content-type')) {\n\t\t\theaders.set('content-type', 'application/json');\n\t\t}\n\n\t\treturn new Response(body, {\n\t\t\t...init,\n\t\t\theaders\n\t\t});\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Response';\n\t}\n}\n\nObject.defineProperties(Response.prototype, {\n\ttype: {enumerable: true},\n\turl: {enumerable: true},\n\tstatus: {enumerable: true},\n\tok: {enumerable: true},\n\tredirected: {enumerable: true},\n\tstatusText: {enumerable: true},\n\theaders: {enumerable: true},\n\tclone: {enumerable: true}\n});\n","export const getSearch = parsedURL => {\n\tif (parsedURL.search) {\n\t\treturn parsedURL.search;\n\t}\n\n\tconst lastOffset = parsedURL.href.length - 1;\n\tconst hash = parsedURL.hash || (parsedURL.href[lastOffset] === '#' ? '#' : '');\n\treturn parsedURL.href[lastOffset - hash.length] === '?' ? '?' : '';\n};\n","import {isIP} from 'node:net';\n\n/**\n * @external URL\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/URL|URL}\n */\n\n/**\n * @module utils/referrer\n * @private\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#strip-url|Referrer Policy §8.4. Strip url for use as a referrer}\n * @param {string} URL\n * @param {boolean} [originOnly=false]\n */\nexport function stripURLForUseAsAReferrer(url, originOnly = false) {\n\t// 1. If url is null, return no referrer.\n\tif (url == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\treturn 'no-referrer';\n\t}\n\n\turl = new URL(url);\n\n\t// 2. If url's scheme is a local scheme, then return no referrer.\n\tif (/^(about|blob|data):$/.test(url.protocol)) {\n\t\treturn 'no-referrer';\n\t}\n\n\t// 3. Set url's username to the empty string.\n\turl.username = '';\n\n\t// 4. Set url's password to null.\n\t// Note: `null` appears to be a mistake as this actually results in the password being `\"null\"`.\n\turl.password = '';\n\n\t// 5. Set url's fragment to null.\n\t// Note: `null` appears to be a mistake as this actually results in the fragment being `\"#null\"`.\n\turl.hash = '';\n\n\t// 6. If the origin-only flag is true, then:\n\tif (originOnly) {\n\t\t// 6.1. Set url's path to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the path being `\"/null\"`.\n\t\turl.pathname = '';\n\n\t\t// 6.2. Set url's query to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the query being `\"?null\"`.\n\t\turl.search = '';\n\t}\n\n\t// 7. Return url.\n\treturn url;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#enumdef-referrerpolicy|enum ReferrerPolicy}\n */\nexport const ReferrerPolicy = new Set([\n\t'',\n\t'no-referrer',\n\t'no-referrer-when-downgrade',\n\t'same-origin',\n\t'origin',\n\t'strict-origin',\n\t'origin-when-cross-origin',\n\t'strict-origin-when-cross-origin',\n\t'unsafe-url'\n]);\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#default-referrer-policy|default referrer policy}\n */\nexport const DEFAULT_REFERRER_POLICY = 'strict-origin-when-cross-origin';\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#referrer-policies|Referrer Policy §3. Referrer Policies}\n * @param {string} referrerPolicy\n * @returns {string} referrerPolicy\n */\nexport function validateReferrerPolicy(referrerPolicy) {\n\tif (!ReferrerPolicy.has(referrerPolicy)) {\n\t\tthrow new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);\n\t}\n\n\treturn referrerPolicy;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy|Referrer Policy §3.2. Is origin potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isOriginPotentiallyTrustworthy(url) {\n\t// 1. If origin is an opaque origin, return \"Not Trustworthy\".\n\t// Not applicable\n\n\t// 2. Assert: origin is a tuple origin.\n\t// Not for implementations\n\n\t// 3. If origin's scheme is either \"https\" or \"wss\", return \"Potentially Trustworthy\".\n\tif (/^(http|ws)s:$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 4. If origin's host component matches one of the CIDR notations 127.0.0.0/8 or ::1/128 [RFC4632], return \"Potentially Trustworthy\".\n\tconst hostIp = url.host.replace(/(^\\[)|(]$)/g, '');\n\tconst hostIPVersion = isIP(hostIp);\n\n\tif (hostIPVersion === 4 && /^127\\./.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\tif (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\t// 5. If origin's host component is \"localhost\" or falls within \".localhost\", and the user agent conforms to the name resolution rules in [let-localhost-be-localhost], return \"Potentially Trustworthy\".\n\t// We are returning FALSE here because we cannot ensure conformance to\n\t// let-localhost-be-loalhost (https://tools.ietf.org/html/draft-west-let-localhost-be-localhost)\n\tif (url.host === 'localhost' || url.host.endsWith('.localhost')) {\n\t\treturn false;\n\t}\n\n\t// 6. If origin's scheme component is file, return \"Potentially Trustworthy\".\n\tif (url.protocol === 'file:') {\n\t\treturn true;\n\t}\n\n\t// 7. If origin's scheme component is one which the user agent considers to be authenticated, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 8. If origin has been configured as a trustworthy origin, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 9. Return \"Not Trustworthy\".\n\treturn false;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy|Referrer Policy §3.3. Is url potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isUrlPotentiallyTrustworthy(url) {\n\t// 1. If url is \"about:blank\" or \"about:srcdoc\", return \"Potentially Trustworthy\".\n\tif (/^about:(blank|srcdoc)$/.test(url)) {\n\t\treturn true;\n\t}\n\n\t// 2. If url's scheme is \"data\", return \"Potentially Trustworthy\".\n\tif (url.protocol === 'data:') {\n\t\treturn true;\n\t}\n\n\t// Note: The origin of blob: and filesystem: URLs is the origin of the context in which they were\n\t// created. Therefore, blobs created in a trustworthy origin will themselves be potentially\n\t// trustworthy.\n\tif (/^(blob|filesystem):$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 3. Return the result of executing §3.2 Is origin potentially trustworthy? on url's origin.\n\treturn isOriginPotentiallyTrustworthy(url);\n}\n\n/**\n * Modifies the referrerURL to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerURLCallback\n * @param {external:URL} referrerURL\n * @returns {external:URL} modified referrerURL\n */\n\n/**\n * Modifies the referrerOrigin to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerOriginCallback\n * @param {external:URL} referrerOrigin\n * @returns {external:URL} modified referrerOrigin\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}\n * @param {Request} request\n * @param {object} o\n * @param {module:utils/referrer~referrerURLCallback} o.referrerURLCallback\n * @param {module:utils/referrer~referrerOriginCallback} o.referrerOriginCallback\n * @returns {external:URL} Request's referrer\n */\nexport function determineRequestsReferrer(request, {referrerURLCallback, referrerOriginCallback} = {}) {\n\t// There are 2 notes in the specification about invalid pre-conditions.  We return null, here, for\n\t// these cases:\n\t// > Note: If request's referrer is \"no-referrer\", Fetch will not call into this algorithm.\n\t// > Note: If request's referrer policy is the empty string, Fetch will not call into this\n\t// > algorithm.\n\tif (request.referrer === 'no-referrer' || request.referrerPolicy === '') {\n\t\treturn null;\n\t}\n\n\t// 1. Let policy be request's associated referrer policy.\n\tconst policy = request.referrerPolicy;\n\n\t// 2. Let environment be request's client.\n\t// not applicable to node.js\n\n\t// 3. Switch on request's referrer:\n\tif (request.referrer === 'about:client') {\n\t\treturn 'no-referrer';\n\t}\n\n\t// \"a URL\": Let referrerSource be request's referrer.\n\tconst referrerSource = request.referrer;\n\n\t// 4. Let request's referrerURL be the result of stripping referrerSource for use as a referrer.\n\tlet referrerURL = stripURLForUseAsAReferrer(referrerSource);\n\n\t// 5. Let referrerOrigin be the result of stripping referrerSource for use as a referrer, with the\n\t//    origin-only flag set to true.\n\tlet referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true);\n\n\t// 6. If the result of serializing referrerURL is a string whose length is greater than 4096, set\n\t//    referrerURL to referrerOrigin.\n\tif (referrerURL.toString().length > 4096) {\n\t\treferrerURL = referrerOrigin;\n\t}\n\n\t// 7. The user agent MAY alter referrerURL or referrerOrigin at this point to enforce arbitrary\n\t//    policy considerations in the interests of minimizing data leakage. For example, the user\n\t//    agent could strip the URL down to an origin, modify its host, replace it with an empty\n\t//    string, etc.\n\tif (referrerURLCallback) {\n\t\treferrerURL = referrerURLCallback(referrerURL);\n\t}\n\n\tif (referrerOriginCallback) {\n\t\treferrerOrigin = referrerOriginCallback(referrerOrigin);\n\t}\n\n\t// 8.Execute the statements corresponding to the value of policy:\n\tconst currentURL = new URL(request.url);\n\n\tswitch (policy) {\n\t\tcase 'no-referrer':\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin':\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'unsafe-url':\n\t\t\treturn referrerURL;\n\n\t\tcase 'strict-origin':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t//    potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerOrigin.\n\t\t\treturn referrerOrigin.toString();\n\n\t\tcase 'strict-origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t//    return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t//    potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 3. Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'same-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t//    return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. Return no referrer.\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t//    return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'no-referrer-when-downgrade':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t//    potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerURL.\n\t\t\treturn referrerURL;\n\n\t\tdefault:\n\t\t\tthrow new TypeError(`Invalid referrerPolicy: ${policy}`);\n\t}\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header|Referrer Policy §8.1. Parse a referrer policy from a Referrer-Policy header}\n * @param {Headers} headers Response headers\n * @returns {string} policy\n */\nexport function parseReferrerPolicyFromHeader(headers) {\n\t// 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy`\n\t//    and response’s header list.\n\tconst policyTokens = (headers.get('referrer-policy') || '').split(/[,\\s]+/);\n\n\t// 2. Let policy be the empty string.\n\tlet policy = '';\n\n\t// 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty\n\t//    string, then set policy to token.\n\t// Note: This algorithm loops over multiple policy values to allow deployment of new policy\n\t// values with fallbacks for older user agents, as described in § 11.1 Unknown Policy Values.\n\tfor (const token of policyTokens) {\n\t\tif (token && ReferrerPolicy.has(token)) {\n\t\t\tpolicy = token;\n\t\t}\n\t}\n\n\t// 4. Return policy.\n\treturn policy;\n}\n","/**\n * Request.js\n *\n * Request class contains server only options\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport {format as formatUrl} from 'node:url';\nimport {deprecate} from 'node:util';\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType, getTotalBytes} from './body.js';\nimport {isAbortSignal} from './utils/is.js';\nimport {getSearch} from './utils/get-search.js';\nimport {\n\tvalidateReferrerPolicy, determineRequestsReferrer, DEFAULT_REFERRER_POLICY\n} from './utils/referrer.js';\n\nconst INTERNALS = Symbol('Request internals');\n\n/**\n * Check if `obj` is an instance of Request.\n *\n * @param  {*} object\n * @return {boolean}\n */\nconst isRequest = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object[INTERNALS] === 'object'\n\t);\n};\n\nconst doBadDataWarn = deprecate(() => {},\n\t'.data is not a valid RequestInit property, use .body instead',\n\t'https://github.com/node-fetch/node-fetch/issues/1000 (request)');\n\n/**\n * Request class\n *\n * Ref: https://fetch.spec.whatwg.org/#request-class\n *\n * @param   Mixed   input  Url or Request instance\n * @param   Object  init   Custom options\n * @return  Void\n */\nexport default class Request extends Body {\n\tconstructor(input, init = {}) {\n\t\tlet parsedURL;\n\n\t\t// Normalize input and force URL to be encoded as UTF-8 (https://github.com/node-fetch/node-fetch/issues/245)\n\t\tif (isRequest(input)) {\n\t\t\tparsedURL = new URL(input.url);\n\t\t} else {\n\t\t\tparsedURL = new URL(input);\n\t\t\tinput = {};\n\t\t}\n\n\t\tif (parsedURL.username !== '' || parsedURL.password !== '') {\n\t\t\tthrow new TypeError(`${parsedURL} is an url with embedded credentials.`);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tif (/^(delete|get|head|options|post|put)$/i.test(method)) {\n\t\t\tmethod = method.toUpperCase();\n\t\t}\n\n\t\tif (!isRequest(init) && 'data' in init) {\n\t\t\tdoBadDataWarn();\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif ((init.body != null || (isRequest(input) && input.body !== null)) &&\n\t\t\t(method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tconst inputBody = init.body ?\n\t\t\tinit.body :\n\t\t\t(isRequest(input) && input.body !== null ?\n\t\t\t\tclone(input) :\n\t\t\t\tnull);\n\n\t\tsuper(inputBody, {\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.set('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ?\n\t\t\tinput.signal :\n\t\t\tnull;\n\t\tif ('signal' in init) {\n\t\t\tsignal = init.signal;\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal or EventTarget');\n\t\t}\n\n\t\t// §5.4, Request constructor steps, step 15.1\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tlet referrer = init.referrer == null ? input.referrer : init.referrer;\n\t\tif (referrer === '') {\n\t\t\t// §5.4, Request constructor steps, step 15.2\n\t\t\treferrer = 'no-referrer';\n\t\t} else if (referrer) {\n\t\t\t// §5.4, Request constructor steps, step 15.3.1, 15.3.2\n\t\t\tconst parsedReferrer = new URL(referrer);\n\t\t\t// §5.4, Request constructor steps, step 15.3.3, 15.3.4\n\t\t\treferrer = /^about:(\\/\\/)?client$/.test(parsedReferrer) ? 'client' : parsedReferrer;\n\t\t} else {\n\t\t\treferrer = undefined;\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal,\n\t\t\treferrer\n\t\t};\n\n\t\t// Node-fetch-only options\n\t\tthis.follow = init.follow === undefined ? (input.follow === undefined ? 20 : input.follow) : init.follow;\n\t\tthis.compress = init.compress === undefined ? (input.compress === undefined ? true : input.compress) : init.compress;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t\tthis.highWaterMark = init.highWaterMark || input.highWaterMark || 16384;\n\t\tthis.insecureHTTPParser = init.insecureHTTPParser || input.insecureHTTPParser || false;\n\n\t\t// §5.4, Request constructor steps, step 16.\n\t\t// Default is empty string per https://fetch.spec.whatwg.org/#concept-request-referrer-policy\n\t\tthis.referrerPolicy = init.referrerPolicy || input.referrerPolicy || '';\n\t}\n\n\t/** @returns {string} */\n\tget method() {\n\t\treturn this[INTERNALS].method;\n\t}\n\n\t/** @returns {string} */\n\tget url() {\n\t\treturn formatUrl(this[INTERNALS].parsedURL);\n\t}\n\n\t/** @returns {Headers} */\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS].redirect;\n\t}\n\n\t/** @returns {AbortSignal} */\n\tget signal() {\n\t\treturn this[INTERNALS].signal;\n\t}\n\n\t// https://fetch.spec.whatwg.org/#dom-request-referrer\n\tget referrer() {\n\t\tif (this[INTERNALS].referrer === 'no-referrer') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer === 'client') {\n\t\t\treturn 'about:client';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer) {\n\t\t\treturn this[INTERNALS].referrer.toString();\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tget referrerPolicy() {\n\t\treturn this[INTERNALS].referrerPolicy;\n\t}\n\n\tset referrerPolicy(referrerPolicy) {\n\t\tthis[INTERNALS].referrerPolicy = validateReferrerPolicy(referrerPolicy);\n\t}\n\n\t/**\n\t * Clone this request\n\t *\n\t * @return  Request\n\t */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Request';\n\t}\n}\n\nObject.defineProperties(Request.prototype, {\n\tmethod: {enumerable: true},\n\turl: {enumerable: true},\n\theaders: {enumerable: true},\n\tredirect: {enumerable: true},\n\tclone: {enumerable: true},\n\tsignal: {enumerable: true},\n\treferrer: {enumerable: true},\n\treferrerPolicy: {enumerable: true}\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param {Request} request - A Request instance\n * @return The options object to be passed to http.request\n */\nexport const getNodeRequestOptions = request => {\n\tconst {parsedURL} = request[INTERNALS];\n\tconst headers = new Headers(request[INTERNALS].headers);\n\n\t// Fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body === null && /^(post|put)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\n\tif (request.body !== null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\t// Set Content-Length if totalBytes is a number (that is not NaN)\n\t\tif (typeof totalBytes === 'number' && !Number.isNaN(totalBytes)) {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// 4.1. Main fetch, step 2.6\n\t// > If request's referrer policy is the empty string, then set request's referrer policy to the\n\t// > default referrer policy.\n\tif (request.referrerPolicy === '') {\n\t\trequest.referrerPolicy = DEFAULT_REFERRER_POLICY;\n\t}\n\n\t// 4.1. Main fetch, step 2.7\n\t// > If request's referrer is not \"no-referrer\", set request's referrer to the result of invoking\n\t// > determine request's referrer.\n\tif (request.referrer && request.referrer !== 'no-referrer') {\n\t\trequest[INTERNALS].referrer = determineRequestsReferrer(request);\n\t} else {\n\t\trequest[INTERNALS].referrer = 'no-referrer';\n\t}\n\n\t// 4.5. HTTP-network-or-cache fetch, step 6.9\n\t// > If httpRequest's referrer is a URL, then append `Referer`/httpRequest's referrer, serialized\n\t// >  and isomorphic encoded, to httpRequest's header list.\n\tif (request[INTERNALS].referrer instanceof URL) {\n\t\theaders.set('Referer', request.referrer);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip, deflate, br');\n\t}\n\n\tlet {agent} = request;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\tconst search = getSearch(parsedURL);\n\n\t// Pass the full URL directly to request(), but overwrite the following\n\t// options:\n\tconst options = {\n\t\t// Overwrite search to retain trailing ? (issue #776)\n\t\tpath: parsedURL.pathname + search,\n\t\t// The following options are not expressed in the URL\n\t\tmethod: request.method,\n\t\theaders: headers[Symbol.for('nodejs.util.inspect.custom')](),\n\t\tinsecureHTTPParser: request.insecureHTTPParser,\n\t\tagent\n\t};\n\n\treturn {\n\t\t/** @type {URL} */\n\t\tparsedURL,\n\t\toptions\n\t};\n};\n","import {FetchBaseError} from './base.js';\n\n/**\n * AbortError interface for cancelled requests\n */\nexport class AbortError extends FetchBaseError {\n\tconstructor(message, type = 'aborted') {\n\t\tsuper(message, type);\n\t}\n}\n","/**\n * Index.js\n *\n * a request API compatible with window.fetch\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport http from 'node:http';\nimport https from 'node:https';\nimport zlib from 'node:zlib';\nimport Stream, {PassThrough, pipeline as pump} from 'node:stream';\nimport {Buffer} from 'node:buffer';\n\nimport dataUriToBuffer from 'data-uri-to-buffer';\n\nimport {writeToStream, clone} from './body.js';\nimport Response from './response.js';\nimport Headers, {fromRawHeaders} from './headers.js';\nimport Request, {getNodeRequestOptions} from './request.js';\nimport {FetchError} from './errors/fetch-error.js';\nimport {AbortError} from './errors/abort-error.js';\nimport {isRedirect} from './utils/is-redirect.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\nimport {isDomainOrSubdomain, isSameProtocol} from './utils/is.js';\nimport {parseReferrerPolicyFromHeader} from './utils/referrer.js';\nimport {\n\tBlob,\n\tFile,\n\tfileFromSync,\n\tfileFrom,\n\tblobFromSync,\n\tblobFrom\n} from 'fetch-blob/from.js';\n\nexport {FormData, Headers, Request, Response, FetchError, AbortError, isRedirect};\nexport {Blob, File, fileFromSync, fileFrom, blobFromSync, blobFrom};\n\nconst supportedSchemas = new Set(['data:', 'http:', 'https:']);\n\n/**\n * Fetch function\n *\n * @param   {string | URL | import('./request').default} url - Absolute url or Request instance\n * @param   {*} [options_] - Fetch options\n * @return  {Promise<import('./response').default>}\n */\nexport default async function fetch(url, options_) {\n\treturn new Promise((resolve, reject) => {\n\t\t// Build request object\n\t\tconst request = new Request(url, options_);\n\t\tconst {parsedURL, options} = getNodeRequestOptions(request);\n\t\tif (!supportedSchemas.has(parsedURL.protocol)) {\n\t\t\tthrow new TypeError(`node-fetch cannot load ${url}. URL scheme \"${parsedURL.protocol.replace(/:$/, '')}\" is not supported.`);\n\t\t}\n\n\t\tif (parsedURL.protocol === 'data:') {\n\t\t\tconst data = dataUriToBuffer(request.url);\n\t\t\tconst response = new Response(data, {headers: {'Content-Type': data.typeFull}});\n\t\t\tresolve(response);\n\t\t\treturn;\n\t\t}\n\n\t\t// Wrap http.request into fetch\n\t\tconst send = (parsedURL.protocol === 'https:' ? https : http).request;\n\t\tconst {signal} = request;\n\t\tlet response = null;\n\n\t\tconst abort = () => {\n\t\t\tconst error = new AbortError('The operation was aborted.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\n\t\t\tif (!response || !response.body) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = () => {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// Send request\n\t\tconst request_ = send(parsedURL.toString(), options);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tconst finalize = () => {\n\t\t\trequest_.abort();\n\t\t\tif (signal) {\n\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t}\n\t\t};\n\n\t\trequest_.on('error', error => {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`, 'system', error));\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(request_, error => {\n\t\t\tif (response && response.body) {\n\t\t\t\tresponse.body.destroy(error);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (process.version < 'v14') {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\trequest_.on('socket', s => {\n\t\t\t\tlet endedWithEventsCount;\n\t\t\t\ts.prependListener('end', () => {\n\t\t\t\t\tendedWithEventsCount = s._eventsCount;\n\t\t\t\t});\n\t\t\t\ts.prependListener('close', hadError => {\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && endedWithEventsCount < s._eventsCount && !hadError) {\n\t\t\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\trequest_.on('response', response_ => {\n\t\t\trequest_.setTimeout(0);\n\t\t\tconst headers = fromRawHeaders(response_.rawHeaders);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (isRedirect(response_.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL(location, request.url);\n\t\t\t\t} catch {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// Nothing to do\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow': {\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: clone(request),\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\tsize: request.size,\n\t\t\t\t\t\t\treferrer: request.referrer,\n\t\t\t\t\t\t\treferrerPolicy: request.referrerPolicy\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// when forwarding sensitive headers like \"Authorization\",\n\t\t\t\t\t\t// \"WWW-Authenticate\", and \"Cookie\" to untrusted targets,\n\t\t\t\t\t\t// headers will be ignored when following a redirect to a domain\n\t\t\t\t\t\t// that is not a subdomain match or exact match of the initial domain.\n\t\t\t\t\t\t// For example, a redirect from \"foo.com\" to either \"foo.com\" or \"sub.foo.com\"\n\t\t\t\t\t\t// will forward the sensitive headers, but a redirect to \"bar.com\" will not.\n\t\t\t\t\t\t// headers will also be ignored when following a redirect to a domain using\n\t\t\t\t\t\t// a different protocol. For example, a redirect from \"https://foo.com\" to \"http://foo.com\"\n\t\t\t\t\t\t// will not forward the sensitive headers\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOptions.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (response_.statusCode !== 303 && request.body && options_.body instanceof Stream.Readable) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (response_.statusCode === 303 || ((response_.statusCode === 301 || response_.statusCode === 302) && request.method === 'POST')) {\n\t\t\t\t\t\t\trequestOptions.method = 'GET';\n\t\t\t\t\t\t\trequestOptions.body = undefined;\n\t\t\t\t\t\t\trequestOptions.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 14\n\t\t\t\t\t\tconst responseReferrerPolicy = parseReferrerPolicyFromHeader(headers);\n\t\t\t\t\t\tif (responseReferrerPolicy) {\n\t\t\t\t\t\t\trequestOptions.referrerPolicy = responseReferrerPolicy;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOptions)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Prepare response\n\t\t\tif (signal) {\n\t\t\t\tresponse_.once('end', () => {\n\t\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet body = pump(response_, new PassThrough(), error => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// see https://github.com/nodejs/node/pull/29376\n\t\t\t/* c8 ignore next 3 */\n\t\t\tif (process.version < 'v12.10') {\n\t\t\t\tresponse_.on('aborted', abortAndFinalize);\n\t\t\t}\n\n\t\t\tconst responseOptions = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: response_.statusCode,\n\t\t\t\tstatusText: response_.statusMessage,\n\t\t\t\theaders,\n\t\t\t\tsize: request.size,\n\t\t\t\tcounter: request.counter,\n\t\t\t\thighWaterMark: request.highWaterMark\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// For gzip\n\t\t\tif (codings === 'gzip' || codings === 'x-gzip') {\n\t\t\t\tbody = pump(body, zlib.createGunzip(zlibOptions), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For deflate\n\t\t\tif (codings === 'deflate' || codings === 'x-deflate') {\n\t\t\t\t// Handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = pump(response_, new PassThrough(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\traw.once('data', chunk => {\n\t\t\t\t\t// See http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflate(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflateRaw(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.once('end', () => {\n\t\t\t\t\t// Some old IIS servers return zero-length OK deflate responses, so\n\t\t\t\t\t// 'data' is never emitted. See https://github.com/node-fetch/node-fetch/pull/903\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For br\n\t\t\tif (codings === 'br') {\n\t\t\t\tbody = pump(body, zlib.createBrotliDecompress(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise, use response as-is\n\t\t\tresponse = new Response(body, responseOptions);\n\t\t\tresolve(response);\n\t\t});\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\twriteToStream(request_, request).catch(reject);\n\t});\n}\n\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tconst LAST_CHUNK = Buffer.from('0\\r\\n\\r\\n');\n\n\tlet isChunkedTransfer = false;\n\tlet properLastChunkReceived = false;\n\tlet previousChunk;\n\n\trequest.on('response', response => {\n\t\tconst {headers} = response;\n\t\tisChunkedTransfer = headers['transfer-encoding'] === 'chunked' && !headers['content-length'];\n\t});\n\n\trequest.on('socket', socket => {\n\t\tconst onSocketClose = () => {\n\t\t\tif (isChunkedTransfer && !properLastChunkReceived) {\n\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\terrorCallback(error);\n\t\t\t}\n\t\t};\n\n\t\tconst onData = buf => {\n\t\t\tproperLastChunkReceived = Buffer.compare(buf.slice(-5), LAST_CHUNK) === 0;\n\n\t\t\t// Sometimes final 0-length chunk and end of message code are in separate packets\n\t\t\tif (!properLastChunkReceived && previousChunk) {\n\t\t\t\tproperLastChunkReceived = (\n\t\t\t\t\tBuffer.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) === 0 &&\n\t\t\t\t\tBuffer.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tpreviousChunk = buf;\n\t\t};\n\n\t\tsocket.prependListener('close', onSocketClose);\n\t\tsocket.on('data', onData);\n\n\t\trequest.on('close', () => {\n\t\t\tsocket.removeListener('close', onSocketClose);\n\t\t\tsocket.removeListener('data', onData);\n\t\t});\n\t});\n}\n","/**\n * GPS Location Helper\n * Supports both hardware GPS and IP-based geolocation\n * Requires: npm install node-fetch\n */\n\ninterface Coordinates {\n  lat: number;\n  lng: number;\n  accuracy?: number;\n  timestamp?: number;\n}\n\ninterface LocationZone {\n  lat: number;\n  lng: number;\n  radius: number; // meters\n}\n\ninterface GPSOptions {\n  useIPLocation?: boolean;\n  ipServiceURL?: string;\n  updateInterval?: number;\n  accuracyThreshold?: number;\n}\n\nexport class GPSLocationHelper {\n  private currentLocation: Coordinates | null = null;\n  // private _lastLocationTime: number = 0;\n  private options: GPSOptions;\n  private updateTimer: NodeJS.Timeout | null = null;\n\n  constructor(options: GPSOptions = {}) {\n    this.options = {\n      useIPLocation: true,\n      ipServiceURL: 'http://ip-api.com/json',\n      updateInterval: 60000, // 1 minute\n      accuracyThreshold: 100, // 100 meters\n      ...options\n    };\n\n    this.startLocationUpdates();\n  }\n\n  private startLocationUpdates(): void {\n    // Get initial location\n    this.updateLocation();\n\n    // Set up periodic updates\n    this.updateTimer = setInterval(() => {\n      this.updateLocation();\n    }, this.options.updateInterval);\n\n    // Cleanup on process exit\n    process.on('SIGINT', () => this.cleanup());\n    process.on('SIGTERM', () => this.cleanup());\n  }\n\n  private async updateLocation(): Promise<void> {\n    try {\n      if (this.options.useIPLocation) {\n        await this.getIPBasedLocation();\n      } else {\n        await this.getHardwareGPSLocation();\n      }\n    } catch (error) {\n      console.error('Failed to update location:', error);\n    }\n  }\n\n  private async getIPBasedLocation(): Promise<void> {\n    try {\n      // Dynamic import for node-fetch compatibility\n      const fetch = (await import('node-fetch')).default;\n      \n      const response = await fetch(this.options.ipServiceURL!);\n      \n      if (!response.ok) {\n        throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n      }\n\n      const data = await response.json() as any;\n      \n      if (data.status === 'success' && data.lat && data.lon) {\n        this.currentLocation = {\n          lat: parseFloat(data.lat),\n          lng: parseFloat(data.lon),\n          accuracy: 10000, // IP location is typically city-level (10km accuracy)\n          timestamp: Date.now()\n        };\n        \n        // this._lastLocationTime = Date.now();\n        console.log(`IP Location updated: ${this.currentLocation.lat}, ${this.currentLocation.lng}`);\n      } else {\n        throw new Error('Invalid response from IP location service');\n      }\n      \n    } catch (error) {\n      console.error('IP geolocation failed:', error);\n      \n      // Fallback to mock location for development\n      this.setMockLocation();\n    }\n  }\n\n  private async getHardwareGPSLocation(): Promise<void> {\n    // Placeholder for hardware GPS implementation\n    // This would integrate with actual GPS hardware/modules\n    console.warn('Hardware GPS not implemented. Using mock location.');\n    this.setMockLocation();\n  }\n\n  private setMockLocation(): void {\n    // Default to a known location (New York City) for testing\n    this.currentLocation = {\n      lat: 40.7128,\n      lng: -74.0060,\n      accuracy: 50,\n      timestamp: Date.now()\n    };\n    console.log('Using mock location: NYC');\n  }\n\n  public getCurrentLocation(): Coordinates | null {\n    return this.currentLocation;\n  }\n\n  public isInZone(zone: LocationZone): boolean {\n    if (!this.currentLocation) {\n      console.warn('No location available for zone check');\n      return false;\n    }\n\n    const distance = this.calculateDistance(\n      this.currentLocation.lat,\n      this.currentLocation.lng,\n      zone.lat,\n      zone.lng\n    );\n\n    const isInside = distance <= zone.radius;\n    \n    console.log(`Location check: ${distance.toFixed(2)}m from zone center (${zone.radius}m radius) - ${isInside ? 'INSIDE' : 'OUTSIDE'}`);\n    \n    return isInside;\n  }\n\n  private calculateDistance(lat1: number, lng1: number, lat2: number, lng2: number): number {\n    // Haversine formula for calculating distance between two points on Earth\n    const R = 6371000; // Earth's radius in meters\n    const dLat = this.toRadians(lat2 - lat1);\n    const dLng = this.toRadians(lng2 - lng1);\n    \n    const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n              Math.cos(this.toRadians(lat1)) * Math.cos(this.toRadians(lat2)) *\n              Math.sin(dLng / 2) * Math.sin(dLng / 2);\n    \n    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n    \n    return R * c;\n  }\n\n  private toRadians(degrees: number): number {\n    return degrees * (Math.PI / 180);\n  }\n\n  public setMockLocationForTesting(lat: number, lng: number): void {\n    this.currentLocation = {\n      lat,\n      lng,\n      accuracy: 1,\n      timestamp: Date.now()\n    };\n    console.log(`Mock location set: ${lat}, ${lng}`);\n  }\n\n  public cleanup(): void {\n    if (this.updateTimer) {\n      clearInterval(this.updateTimer);\n      this.updateTimer = null;\n    }\n  }\n}\n\n// Factory function for creating GPS-based availability triggers\nexport function createGPSLocationTrigger(\n  zone: LocationZone,\n  options?: GPSOptions\n): () => boolean {\n  const gpsHelper = new GPSLocationHelper(options);\n\n  return () => gpsHelper.isInZone(zone);\n}\n\n// Simpler interface matching the original helper\nexport function gpsLocation(zone: LocationZone): () => boolean {\n  return createGPSLocationTrigger(zone, { useIPLocation: true });\n}\n\n// Utility functions\nexport async function getCurrentPosition(options?: GPSOptions): Promise<Coordinates | null> {\n  const helper = new GPSLocationHelper(options);\n  \n  // Wait a moment for location to be obtained\n  await new Promise(resolve => setTimeout(resolve, 2000));\n  \n  const location = helper.getCurrentLocation();\n  helper.cleanup();\n  \n  return location;\n}\n\nexport function calculateDistanceBetween(\n  point1: { lat: number; lng: number },\n  point2: { lat: number; lng: number }\n): number {\n  const helper = new GPSLocationHelper();\n  const distance = (helper as any).calculateDistance(\n    point1.lat, point1.lng, point2.lat, point2.lng\n  );\n  helper.cleanup();\n  return distance;\n}\n\n// Export types for external use\nexport type { Coordinates, LocationZone, GPSOptions };"]}